[med-svn] [sambamba] 01/02: New upstream version 0.6.5
Andreas Tille
tille at debian.org
Sat Mar 4 18:18:29 UTC 2017
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository sambamba.
commit 00562268bda5e61e4d462211ba5aacd389ad1eeb
Author: Andreas Tille <tille at debian.org>
Date: Sat Mar 4 19:17:25 2017 +0100
New upstream version 0.6.5
---
.dropbox.sh | 6 +
.gitignore | 8 +
.gitmodules | 9 +
.run_tests.sh | 6 +
.test_suite.sh | 116 +
.travis.yml | 29 +
LICENSE | 340 +
Makefile | 84 +
README.md | 117 +
bioconda_yaml_gen.py | 55 +
cram/exception.d | 7 +
cram/htslib.d | 1544 +++
cram/reader.d | 122 +
cram/reference.d | 111 +
cram/slicereader.d | 113 +
cram/wrappers.d | 420 +
cram/writer.d | 108 +
deb/DEBIAN_CHANGELOG | 139 +
deb/makepackage.rb | 181 +
etc/bash_completion.d/sambamba | 77 +
main.d | 80 +
man/.gitignore | 1 +
man/sambamba-flagstat.1 | 59 +
man/sambamba-flagstat.1.ronn | 34 +
man/sambamba-index.1 | 53 +
man/sambamba-index.1.ronn | 41 +
man/sambamba-markdup.1 | 53 +
man/sambamba-markdup.1.ronn | 56 +
man/sambamba-merge.1 | 35 +
man/sambamba-merge.1.ronn | 34 +
man/sambamba-pileup.1 | 60 +
man/sambamba-pileup.1.ronn | 53 +
man/sambamba-slice.1 | 23 +
man/sambamba-slice.1.ronn | 26 +
man/sambamba-sort.1 | 68 +
man/sambamba-sort.1.ronn | 72 +
man/sambamba-view.1 | 174 +
man/sambamba-view.1.ronn | 128 +
man/sambamba.1 | 45 +
man/sambamba.1.ronn | 24 +
randomize_bases.d | 22 +
sambamba-ldmd-debug.rsp | 1 +
sambamba-ldmd-release.rsp | 1 +
sambamba/depth.d | 1241 ++
sambamba/fixbins.d | 100 +
sambamba/flagstat.d | 139 +
sambamba/index.d | 117 +
sambamba/markdup.d | 1313 ++
sambamba/merge.d | 466 +
sambamba/pileup.d | 726 ++
sambamba/slice.d | 334 +
sambamba/sort.d | 588 +
sambamba/utils/common/bed.d | 151 +
sambamba/utils/common/file.d | 10 +
sambamba/utils/common/filtering.d | 356 +
sambamba/utils/common/intervaltree.d | 153 +
sambamba/utils/common/ldc_gc_workaround.d | 81 +
sambamba/utils/common/overwrite.d | 37 +
sambamba/utils/common/pratt_parser.d | 467 +
sambamba/utils/common/progressbar.d | 83 +
sambamba/utils/common/queryparser.d | 491 +
sambamba/utils/common/readstorage.d | 140 +
sambamba/utils/common/tmpdir.d | 24 +
sambamba/utils/view/alignmentrangeprocessor.d | 195 +
sambamba/utils/view/headerserializer.d | 80 +
sambamba/view.d | 384 +
test/issue225.bam | Bin 0 -> 4261 bytes
test/issue225.bam.bai | Bin 0 -> 96 bytes
test/issue225.out | 1904 +++
test/issue225.z.out | 16572 ++++++++++++++++++++++++
test/issue_193.bam | Bin 0 -> 5167 bytes
test/issue_193.bam.bai | Bin 0 -> 256 bytes
test/issue_193_expected_output.txt | 255 +
test/issue_204.bam | Bin 0 -> 38690 bytes
test/issue_204.bam.bai | Bin 0 -> 81792 bytes
test/issue_204_expected_output.txt | 2 +
test/mate_overlaps_1_3M_4M.bam | Bin 0 -> 30315 bytes
test/mate_overlaps_1_3M_4M.bam.bai | Bin 0 -> 2952 bytes
test/mate_overlaps_1_3M_4M.bed | 5 +
test/test_depth.py | 126 +
thirdparty/mergesort.d | 221 +
thirdparty/unstablesort.d | 328 +
utils/lz4.d | 322 +
utils/strip_bcf_header.d | 107 +
utils/version_.d | 21 +
85 files changed, 32274 insertions(+)
diff --git a/.dropbox.sh b/.dropbox.sh
new file mode 100755
index 0000000..84d653f
--- /dev/null
+++ b/.dropbox.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+for i in "$@"; do
+ CONTENT_LENGTH=`ls -la "$i" | awk '{ print $5}'`
+ curl --request PUT --header "Content-Length: "${CONTENT_LENGTH}"" --header "Content-Type: multipart/mixed" --data-binary "@"$i"" "https://api-content.dropbox.com/1/files_put/sandbox/$i?access_token="${ACCESS_TOKEN}""
+ printf "\n"
+done
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..84a1605
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,8 @@
+build/
+shunit*
+/*.sam
+/*.bam
+/*.bai
+/*.cram
+/*.crai
+/*.txt
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..c976cd4
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,9 @@
+[submodule "BioD"]
+ path = BioD
+ url = https://github.com/biod/BioD.git
+[submodule "htslib"]
+ path = htslib
+ url = https://github.com/lomereiter/htslib.git
+[submodule "lz4"]
+ path = lz4
+ url = https://github.com/Cyan4973/lz4
diff --git a/.run_tests.sh b/.run_tests.sh
new file mode 100755
index 0000000..4b2d086
--- /dev/null
+++ b/.run_tests.sh
@@ -0,0 +1,6 @@
+#!/usr/bin/env bash
+
+# download shunit2 in order to run tests:
+# curl -L "https://dl.dropboxusercontent.com/u/7916095/shunit2-2.0.3.tgz" | tar zx --overwrite
+
+./.test_suite.sh | tee /dev/stderr | grep -q 'success rate: 100%'
diff --git a/.test_suite.sh b/.test_suite.sh
new file mode 100755
index 0000000..87bcf8b
--- /dev/null
+++ b/.test_suite.sh
@@ -0,0 +1,116 @@
+#!/usr/bin/env bash
+
+testSortByName() {
+ # use very tiny buffer of 200K so that multithreading is used
+ ./build/sambamba sort -t2 -n BioD/test/data/ex1_header.bam -o ex1_header.nsorted.bam -m 200K
+ ./build/sambamba view -t2 ex1_header.nsorted.bam > ex1_header.nsorted.sam
+ assertEquals "3270" `wc -l < ex1_header.nsorted.sam`
+ cat ex1_header.nsorted.sam | cut -f1 | LC_ALL=C sort -c
+ assertEquals 0 $?
+}
+
+testSortByCoordinate() {
+ ./build/sambamba sort -t2 -m 50M ex1_header.nsorted.bam -o ex1_header.sorted.bam
+ ./build/sambamba index -t2 ex1_header.sorted.bam
+ assertEquals 0 $?
+}
+
+testSlice() {
+ ./build/sambamba slice ex1_header.sorted.bam chr1 -o /dev/null
+ assertEquals 0 $?
+}
+
+testView() {
+ assertEquals "1806" `./build/sambamba view -c ex1_header.sorted.bam chr2`
+ assertEquals "1464" `./build/sambamba view -c ex1_header.sorted.bam chr1`
+ assertEquals "0" `./build/sambamba view -c ex1_header.sorted.bam '*'`
+}
+
+testOverwriteProtection() {
+ ./build/sambamba view ex1_header.nsorted.bam -f bam -o ./ex1_header.nsorted.bam 2>/dev/null
+ assertNotSame 0 $?
+ ./build/sambamba merge ex1_header.sorted.bam ex1_header.sorted.bam ex1_header.sorted.bam 2>/dev/null
+ assertNotSame 0 $?
+ ./build/sambamba sort -m 50M ex1_header.nsorted.bam -o ./build/../ex1_header.nsorted.bam 2>/dev/null
+ assertNotSame 0 $?
+ ./build/sambamba markdup ex1_header.nsorted.bam ./build/../ex1_header.nsorted.bam 2>/dev/null
+ assertNotSame 0 $?
+ ./build/sambamba slice ex1_header.nsorted.bam chr1 -o ./build/../ex1_header.nsorted.bam 2>/dev/null
+ assertNotSame 0 $?
+}
+
+testSortingEmptyFile() {
+ ./build/sambamba view ex1_header.sorted.bam -f bam -F "ref_id > 3" -o empty.bam 2>/dev/null
+ ./build/sambamba sort -m 50M empty.bam -o empty2.bam 2>/dev/null
+ assertEquals "0" `./build/sambamba view -c empty2.bam`
+}
+
+testMarkdupEmptyFile() {
+ ./build/sambamba view ex1_header.sorted.bam -f bam -F "ref_id > 3" -o empty.bam 2>/dev/null
+ ./build/sambamba markdup empty.bam empty.dedup.bam 2>/dev/null
+ assertEquals "0" `./build/sambamba view -c empty.dedup.bam`
+}
+
+testCramView() {
+ ./build/sambamba view -S htslib/test/c1\#pad2.sam -T htslib/test/c1.fa -f cram -o c1_pad2.cram
+ ./build/sambamba view -C c1_pad2.cram >/dev/null
+ assertEquals 0 $?
+}
+
+testIndexUsage() {
+ rm *.bai && rm c1_*
+ ./build/sambamba view -S htslib/test/c1\#pad2.sam -T htslib/test/c1.fa -f cram -o c1_pad2.cram &&
+ ./build/sambamba index -C c1_pad2.cram && test -e c1_pad2.cram.crai
+ ./build/sambamba index -C c1_pad2.cram c1_cram_index && test -e c1_cram_index.crai
+ ./build/sambamba index ex1_header.sorted.bam && test -e ex1_header.sorted.bam.bai
+ ./build/sambamba index ex1_header.sorted.bam ex1_header.sorted.bai && test -e ex1_header.sorted.bai
+ assertEquals 0 $?
+}
+
+testIssue193() {
+ rm -f output_193.txt
+ ./build/sambamba depth base test/issue_193.bam > output_193.txt 2>/dev/null
+ diff -q output_193.txt test/issue_193_expected_output.txt
+ assertEquals 0 $?
+}
+
+testIssue204() {
+ rm -f output_204.txt
+ ./build/sambamba index test/issue_204.bam
+ ./build/sambamba depth region test/issue_204.bam -L 2:166868600-166868813 -T 15 -T 20 -T 25 -m > output_204.txt 2>/dev/null
+ diff -q output_204.txt test/issue_204_expected_output.txt
+ assertEquals 0 $?
+}
+
+testIssue206() {
+ ./build/sambamba markdup ex1_header.sorted.bam ex1_header.dedup.bam 2>/dev/null
+ ./build/sambamba view -H ex1_header.dedup.bam | grep '@PG' | grep -q 'sambamba'
+ assertEquals 0 $?
+
+ ./build/sambamba view ex1_header.sorted.bam -f bam -o ex1_header.filtered.bam\
+ -F "supplementary or secondary_alignment"
+ ./build/sambamba view -H ex1_header.filtered.bam | grep '@PG' | grep -q 'secondary'
+ assertEquals 0 $?
+}
+
+testIssue225() {
+ ./build/sambamba index test/issue225.bam
+ ./build/sambamba depth base -c 1 test/issue225.bam > depth_base_225_1.txt 2>/dev/null
+ diff -q depth_base_225_1.txt test/issue225.out
+ assertEquals 0 $?
+
+ ./build/sambamba depth base -c 0 test/issue225.bam > depth_base_225_0.txt 2>/dev/null
+ diff -q depth_base_225_0.txt test/issue225.z.out
+ assertEquals 0 $?
+
+ # exercise BED codepath as well
+ ./build/sambamba depth base -c 1 -L chrM test/issue225.bam > depth_base_225_1.txt 2>/dev/null
+ diff -q depth_base_225_1.txt test/issue225.out
+ assertEquals 0 $?
+
+ ./build/sambamba depth base -c 0 -L chrM test/issue225.bam > depth_base_225_0.txt 2>/dev/null
+ diff -q depth_base_225_0.txt test/issue225.z.out
+ assertEquals 0 $?
+}
+
+. shunit2-2.0.3/src/shell/shunit2
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..ffd849c
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,29 @@
+# this file is used in order to build sambamba for Mac OS X on Travis CI
+language: objective-c
+
+env:
+ global:
+ - ACCESS_LEVEL=sandbox
+ - secure: blVtZH4Ia+4MkeTm0gRwL07r/bzhVRJJjUEbtvt0pIQNAtDq5aYuKnCI9sIw99XmEbv9+tSLc6DXq9d6LrDDR0EG7UUB4sTP6XW1XNJXm/kLIuoOCxTnVk6WBHZ4jusMWE0MNNDVmIS8nHrpoDp2ERXbfasD/9GT+3avVUvnsMg=
+ - secure: Kzdt/6PLGBhD5f8yOPaPdX5yxHisCPvmfYEKUcEVksKOEurQoIpsNjzAky/yzso4R21T6xycjawFvDXvlVA83m/WJZSDDiFLZVgGoaMoZl9UYOPESeZlJR57/HkjgCss0iz/AX9abUzJ1jGfRt9ujtwcoXB15PqUhbjk2iHF0f0=
+ - secure: K0J2r5R8xQMlAUwCaPVWHZUO4U+c+czK6H9bnN5RZPYs5BXpYjdV7/RgkOHsN9b+UksFx7LQRstgcVVcC+mQJRV8slGrx/GSmIA93Dp2mskU9eR1aQjxcUK10VMbIQI6qbXsZvvRSWPirNDQY4s3CjEKEv34t2IGALTkwaU1NmI=
+ - secure: J1ta2/K8lj5dbHRvk+jTUAMICSnepfyc8ILCfM/HFCRaXMJQJTX1HDzEMwK3tAzzKaKEp9Tbm2b3IwE1tCtFaAfYUGozmHLirkFfKqCu/jNUkxL807M8NiqMx+H7tu2aR6t9opYyBjNhtuthbIdir3c42nldYdpse0ZLhzQTLfs=
+
+before_install:
+ - brew install xz
+ - wget https://github.com/ldc-developers/ldc/releases/download/v0.17.1/ldc2-0.17.1-osx-x86_64.tar.xz
+ - tar xJf ldc2-0.17.1-osx-x86_64.tar.xz
+ - export PATH=`pwd`/ldc2-0.17.1-osx-x86_64/bin:$PATH
+ - export LIBRARY_PATH=`pwd`/ldc2-0.17.1-osx-x86_64/lib
+ - git submodule update --init --recursive
+ - wget https://github.com/craigcitro/r-travis/raw/master/scripts/dropbox.sh
+ - chmod +x dropbox.sh
+ - curl -L "https://dl.dropboxusercontent.com/u/7916095/shunit2-2.0.3.tgz" | tar zx
+
+script:
+ - make sambamba-ldmd2-64
+ - ./.run_tests.sh
+
+after_success:
+ - tar cjvf sambamba_osx.tar.bz2 ./build/sambamba
+ - ./dropbox.sh upload sambamba_osx.tar.bz2
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..d60c31a
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..28a0c50
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,84 @@
+D_COMPILER=dmd
+D_FLAGS=--compiler=dmd -IBioD -g -d#-O -release -inline # -version=serial
+
+STATIC_LIB_PATH=-Lhtslib -Llz4/lib
+STATIC_LIB_SUBCMD=$(STATIC_LIB_PATH) -Wl,-Bstatic -lhts -llz4 -Wl,-Bdynamic
+RDMD_FLAGS=--force --build-only --compiler=$(D_COMPILER) $(D_FLAGS)
+
+PLATFORM := $(shell uname -s)
+
+ifeq "$(PLATFORM)" "Darwin"
+LINK_CMD=gcc -dead_strip -lphobos2-ldc -ldruntime-ldc -lm -lpthread htslib/libhts.a lz4/lib/liblz4.a build/sambamba.o -o build/sambamba
+DMD_STATIC_LIBS=htslib/libhts.a lz4/lib/liblz4.a
+else
+LINK_CMD=gcc -Wl,--gc-sections -o build/sambamba build/sambamba.o $(STATIC_LIB_SUBCMD) -l:libphobos2-ldc.a -l:libdruntime-ldc.a -lrt -lpthread -lm
+DMD_STATIC_LIBS=-L-Lhtslib -L-l:libhts.a -L-l:libphobos2.a -L-Llz4/lib -L-l:liblz4.a
+endif
+
+# DMD only - this goal is used because of fast compilation speed, during development
+all: htslib-static lz4-static
+ mkdir -p build/
+ rdmd --force --build-only $(D_FLAGS) $(DMD_STATIC_LIBS) -ofbuild/sambamba main.d
+
+# This is the main Makefile goal, used for building releases (best performance)
+sambamba-ldmd2-64: htslib-static lz4-static
+ mkdir -p build/
+ ldmd2 @sambamba-ldmd-release.rsp
+ $(LINK_CMD)
+
+# For debugging; GDB & Valgrind are more friendly to executables created using LDC/GDC than DMD
+sambamba-ldmd2-debug: htslib-static lz4-static
+ mkdir -p build/
+ ldmd2 @sambamba-ldmd-debug.rsp
+ $(LINK_CMD)
+
+htslib-static:
+ cd htslib && $(MAKE)
+
+lz4-static: lz4/lib/liblz4.a
+
+lz4/lib/liblz4.a: lz4/lib/lz4.c lz4/lib/lz4hc.c lz4/lib/lz4frame.c lz4/lib/xxhash.c
+ cd lz4/lib && $(CC) -O3 -c lz4.c lz4hc.c lz4frame.c xxhash.c && $(AR) rcs liblz4.a lz4.o lz4hc.o lz4frame.o xxhash.o
+
+# all below link to libhts dynamically for simplicity
+
+sambamba-flagstat:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-flagstat sambamba/flagstat.d
+
+sambamba-merge:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-merge sambamba/merge.d
+
+sambamba-index:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-index sambamba/index.d
+
+sambamba-sort:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-sort sambamba/sort.d
+
+sambamba-view:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-view sambamba/view.d
+
+sambamba-slice:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-slice sambamba/slice.d
+
+sambamba-markdup:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-markdup sambamba/markdup.d
+
+sambamba-depth:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-depth sambamba/depth.d
+
+sambamba-pileup:
+ mkdir -p build/
+ rdmd $(RDMD_FLAGS) -L-lhts -version=standalone -ofbuild/sambamba-pileup sambamba/pileup.d
+
+.PHONY: clean
+
+clean:
+ rm -rf build/ ; $(MAKE) -C htslib clean ; $(MAKE) -C lz4 clean
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..d9995ad
--- /dev/null
+++ b/README.md
@@ -0,0 +1,117 @@
+[![Anaconda-Server Badge](https://anaconda.org/bioconda/sambamba/badges/installer/conda.svg)](https://conda.anaconda.org/bioconda)
+
+[![DOI](https://zenodo.org/badge/doi/10.5281/zenodo.13200.svg)](http://dx.doi.org/10.5281/zenodo.13200)
+# Sambamba
+
+Sambamba is a high performance modern robust and fast tool (and
+library), written in the D programming language, for working with SAM
+and BAM files. Current parallelised functionality is an important
+subset of samtools functionality, including view, index, sort,
+markdup, and depth.
+
+Because of efficient use of modern multicore CPUs, usually `sambamba` is much faster
+than `samtools`. For example, indexing a 2.5 Gb BAM file (fully cached into RAM)
+on a 8 core machine utilizes all cores at 64% CPU:
+
+ time sambamba index merged_NIT20120138_F3_20130715.bam -t8
+
+ real 0m17.398s
+ user 1m25.841s
+ sys 0m3.752s
+
+meanwhile samtools is *4x* slower:
+
+ time samtools index merged_NIT20120138_F3_20130715.bam
+
+ real 1m8.083s
+ user 1m6.640s
+ sys 0m1.448s
+
+In practice, the speedup is usually smaller since I/O becomes a bottleneck.
+Even so, it makes a big difference, shifting the focus to I/O optimization, i.e.
+less temporary files, more UNIX pipes, faster disk storage, tweaking filesystem, etc.
+Most tools in `sambamba` support piping: just specify `/dev/stdin` or `/dev/stdout` as filenames.
+
+Notice that `samtools` implements parallel BAM compression in `sort` and `merge`,
+but `sambamba` should be faster for these tasks (given same amount of memory)
+due to more cache-friendly approach to parallelization.
+If it is not the case for you, please file a bug.
+
+Sambamba is free and open source software, licensed under GPLv2+.
+See manual pages [online](https://lomereiter.github.io/sambamba/docs/sambamba-view.html)
+to know more about what is available and how to use it.
+
+For more information on Sambamba you can contact Artem Tarasov and Pjotr Prins.
+
+# Binaries
+
+If you are already a Conda user, please use [`bioconda`](https://bioconda.github.io/) channel.
+If you are not, strongly consider becoming one.
+
+Users of Homebrew can also use the formula from `homebrew-science`.
+
+For those not in the mood to learn/install new package managers, there are of course Github [releases](https://github.com/lomereiter/sambamba/releases).
+
+# Compiling Sambamba
+
+The preferred method for compiling Sambamba is with the LDC compiler
+which targets LLVM.
+
+## Compiling for Linux
+
+The LDC compiler's github repository also provides binary images. The current
+preferred release for sambamba is LDC - the LLVM D compiler (>= 0.16.1). After
+installing LDC:
+
+```sh
+ git clone --recursive https://github.com/lomereiter/sambamba.git
+ cd sambamba
+ make sambamba-ldmd2-64
+```
+
+Installing LDC only means unpacking an archive and setting some environmental variables, e.g. unpacking into `$HOME`:
+```sh
+cd
+wget https://github.com/ldc-developers/ldc/releases/download/v0.17.1/ldc2-0.17.1-linux-x86_64.tar.xz
+tar xJf ldc2-0.17.1-linux-x86_64.tar.xz
+export PATH=~/ldc2-0.17.1-linux-x86_64/bin/:$PATH
+export LIBRARY_PATH=~/ldc2-0.17.1-linux-x86_64/lib/
+```
+
+## Compiling for Mac OS X
+
+```sh
+ brew install ldc
+ git clone --recursive https://github.com/lomereiter/sambamba.git
+ cd sambamba
+ make sambamba-ldmd2-64
+```
+
+# Troubleshooting
+
+In case of crashes it's helpful to have GDB stacktraces (`bt` command).
+
+Note that GDB should be made aware of D garbage collector:
+```
+handle SIGUSR1 nostop
+handle SIGUSR1 noprint
+handle SIGUSR2 nostop
+handle SIGUSR2 noprint
+```
+
+# Development
+
+Sambamba development and issue tracker is on
+[github](https://github.com/lomereiter/sambamba). Developer
+documentation can be found in the source code and the [development
+documentation](https://github.com/lomereiter/sambamba-dev-docs).
+
+# Copyright
+
+Sambamba is distributed under GNU Public License v2+.
+
+# Citation
+
+If you are using Sambamba in your research, please cite the following article:
+
+A. Tarasov, A. J. Vilella, E. Cuppen, I. J. Nijman, and P. Prins. Sambamba: fast processing of NGS alignment formats. Bioinformatics, 2015.
diff --git a/bioconda_yaml_gen.py b/bioconda_yaml_gen.py
new file mode 100644
index 0000000..c9d24fe
--- /dev/null
+++ b/bioconda_yaml_gen.py
@@ -0,0 +1,55 @@
+template = """package:
+ name: sambamba
+ version: '{version}'
+
+source:
+ fn: sambamba_v{version}.tar.bz2
+ url: {linux_url} # [linux]
+ md5: {linux_md5} # [linux]
+ url: {osx_url} # [osx]
+ md5: {osx_md5} # [osx]
+
+build:
+ number: 0
+
+requirements:
+ build:
+ run:
+ - samtools # required for mpileup
+ - bcftools # required for mpileup
+
+test:
+ commands:
+ - sambamba view
+
+about:
+ home: https://github.com/lomereiter/sambamba
+ license: GPLv2
+ summary: Tools for working with SAM/BAM data
+"""
+
+import json
+from urllib2 import urlopen
+from hashlib import md5
+
+latest_release = json.loads(urlopen("https://api.github.com/repos/lomereiter/sambamba/releases").read())[0]
+sambamba_version = latest_release['tag_name'][1:]
+
+downloads = {}
+for asset in latest_release['assets']:
+ url = asset['browser_download_url']
+ platform = asset['name'].split(sambamba_version)[1].split(".")[0][1:]
+ downloads[platform] = url
+
+def md5sum(download):
+ h = md5()
+ h.update(urlopen(download).read())
+ return h.hexdigest()
+
+linux_md5 = md5sum(downloads['linux'])
+osx_md5 = md5sum(downloads['osx'])
+
+print template.format(version=sambamba_version,
+ linux_url=downloads['linux'],
+ osx_url=downloads['osx'],
+ linux_md5=linux_md5, osx_md5=osx_md5)
diff --git a/cram/exception.d b/cram/exception.d
new file mode 100644
index 0000000..937fe53
--- /dev/null
+++ b/cram/exception.d
@@ -0,0 +1,7 @@
+module cram.exception;
+
+public import std.exception;
+
+class CramException : Exception {
+ this(string msg) { super(msg); }
+}
diff --git a/cram/htslib.d b/cram/htslib.d
new file mode 100644
index 0000000..8cc3fef
--- /dev/null
+++ b/cram/htslib.d
@@ -0,0 +1,1544 @@
+module cram.htslib;
+
+// TODO: structs with bitfields are not represented correctly
+
+import core.stdc.stdio;
+import core.stdc.config;
+import core.stdc.stdarg;
+import core.sys.posix.pthread;
+
+extern (C):
+
+alias __kstring_t kstring_t;
+alias _Anonymous_0 htsFile;
+alias __hts_idx_t hts_idx_t;
+alias _Anonymous_1 hts_pair64_t;
+alias int function (BGZF*, void*, void*, int*, int*, int*) hts_readrec_func;
+alias _Anonymous_2 hts_itr_t;
+alias int function (void*, const(char)*) hts_name2id_f;
+alias _Anonymous_2* function (const(__hts_idx_t)*, int, int, int, int function (BGZF*, void*, void*, int*, int*, int*)) hts_itr_query_func;
+alias const(char)* function (void*, int) hts_id2name_f;
+alias _Anonymous_3 bam_hdr_t;
+alias _Anonymous_4 bam1_core_t;
+alias _Anonymous_5 bam1_t;
+alias _Anonymous_0 samFile;
+alias _Anonymous_6 bam_pileup1_t;
+alias int function (void*, _Anonymous_5*) bam_plp_auto_f;
+alias __bam_plp_t* bam_plp_t;
+alias __bam_mplp_t* bam_mplp_t;
+alias _Anonymous_5 bam_seq_t;
+alias _Anonymous_7 string_t;
+alias _Anonymous_8 string_alloc_t;
+alias _Anonymous_9 pool_t;
+alias _Anonymous_10 pool_alloc_t;
+alias uint khint32_t;
+alias c_ulong khint64_t;
+alias uint khint_t;
+alias uint khiter_t;
+alias const(char)* kh_cstr_t;
+alias _Anonymous_11 ks_tokaux_t;
+alias SAM_hdr_tag_s SAM_hdr_tag;
+alias SAM_hdr_item_s SAM_hdr_type;
+alias _Anonymous_12 SAM_SQ;
+alias _Anonymous_13 SAM_RG;
+alias _Anonymous_14 SAM_PG;
+alias kh_sam_hdr_s kh_sam_hdr_t;
+alias kh_m_s2i_s kh_m_s2i_t;
+alias _Anonymous_15 SAM_hdr;
+alias t_res t_pool_result;
+alias _Anonymous_16 t_pool_worker_t;
+alias _Anonymous_17 mFILE;
+alias kh_m_i2i_s kh_m_i2i_t;
+alias kh_s_i2i_s kh_s_i2i_t;
+alias ubyte uc;
+alias _Anonymous_18 pmap_t;
+alias kh_map_s kh_map_t;
+alias _Anonymous_19 cram_stats;
+alias _Anonymous_20 cram_file_def;
+alias _Anonymous_21 cram_metrics;
+alias _Anonymous_22 cram_block;
+alias _Anonymous_23 cram_block_compression_hdr;
+alias _Anonymous_24 cram_block_slice_hdr;
+alias _Anonymous_25 cram_container;
+alias _Anonymous_26 cram_record;
+alias _Anonymous_27 cram_feature;
+alias _Anonymous_28 refs_t;
+alias _Anonymous_29 cram_range;
+alias _Anonymous_30 cram_huffman_code;
+alias _Anonymous_31 cram_huffman_decoder;
+alias _Anonymous_32 cram_huffman_encoder;
+alias _Anonymous_33 cram_beta_decoder;
+alias _Anonymous_34 cram_gamma_decoder;
+alias _Anonymous_35 cram_subexp_decoder;
+alias _Anonymous_36 cram_external_decoder;
+alias _Anonymous_37 cram_byte_array_len_decoder;
+alias _Anonymous_38 cram_byte_array_stop_decoder;
+alias _Anonymous_39 cram_byte_array_len_encoder;
+
+extern __gshared int hts_verbose;
+extern __gshared const ubyte[256] seq_nt16_table;
+extern __gshared const ubyte* seq_nt16_str;
+extern __gshared const double __ac_HASH_UPPER;
+
+enum htsFormatCategory
+{
+ unknown_category = 0,
+ sequence_data = 1,
+ variant_data = 2,
+ index_file = 3,
+ region_list = 4,
+ category_maximum = 32767
+}
+
+enum htsExactFormat
+{
+ unknown_format = 0,
+ binary_format = 1,
+ text_format = 2,
+ sam = 3,
+ bam = 4,
+ bai = 5,
+ cram = 6,
+ crai = 7,
+ vcf = 8,
+ bcf = 9,
+ csi = 10,
+ gzi = 11,
+ tbi = 12,
+ bed = 13,
+ format_maximum = 32767
+}
+
+enum htsCompression
+{
+ no_compression = 0,
+ gzip = 1,
+ bgzf = 2,
+ custom = 3,
+ compression_maximum = 32767
+}
+
+enum sam_fields
+{
+ SAM_QNAME = 1,
+ SAM_FLAG = 2,
+ SAM_RNAME = 4,
+ SAM_POS = 8,
+ SAM_MAPQ = 16,
+ SAM_CIGAR = 32,
+ SAM_RNEXT = 64,
+ SAM_PNEXT = 128,
+ SAM_TLEN = 256,
+ SAM_SEQ = 512,
+ SAM_QUAL = 1024,
+ SAM_AUX = 2048,
+ SAM_RGAUX = 4096
+}
+
+enum cram_option
+{
+ CRAM_OPT_DECODE_MD = 0,
+ CRAM_OPT_PREFIX = 1,
+ CRAM_OPT_VERBOSITY = 2,
+ CRAM_OPT_SEQS_PER_SLICE = 3,
+ CRAM_OPT_SLICES_PER_CONTAINER = 4,
+ CRAM_OPT_RANGE = 5,
+ CRAM_OPT_VERSION = 6,
+ CRAM_OPT_EMBED_REF = 7,
+ CRAM_OPT_IGNORE_MD5 = 8,
+ CRAM_OPT_REFERENCE = 9,
+ CRAM_OPT_MULTI_SEQ_PER_SLICE = 10,
+ CRAM_OPT_NO_REF = 11,
+ CRAM_OPT_USE_BZIP2 = 12,
+ CRAM_OPT_SHARED_REF = 13,
+ CRAM_OPT_NTHREADS = 14,
+ CRAM_OPT_THREAD_POOL = 15,
+ CRAM_OPT_USE_LZMA = 16,
+ CRAM_OPT_USE_RANS = 17,
+ CRAM_OPT_REQUIRED_FIELDS = 18
+}
+
+enum cigar_op
+{
+ BAM_CMATCH_ = 0,
+ BAM_CINS_ = 1,
+ BAM_CDEL_ = 2,
+ BAM_CREF_SKIP_ = 3,
+ BAM_CSOFT_CLIP_ = 4,
+ BAM_CHARD_CLIP_ = 5,
+ BAM_CPAD_ = 6,
+ BAM_CBASE_MATCH = 7,
+ BAM_CBASE_MISMATCH = 8
+}
+
+enum sam_sort_order
+{
+ ORDER_UNKNOWN = -1,
+ ORDER_UNSORTED = 0,
+ ORDER_NAME = 1,
+ ORDER_COORD = 2
+}
+
+enum cram_encoding
+{
+ E_NULL = 0,
+ E_EXTERNAL = 1,
+ E_GOLOMB = 2,
+ E_HUFFMAN = 3,
+ E_BYTE_ARRAY_LEN = 4,
+ E_BYTE_ARRAY_STOP = 5,
+ E_BETA = 6,
+ E_SUBEXP = 7,
+ E_GOLOMB_RICE = 8,
+ E_GAMMA = 9
+}
+
+enum cram_external_type
+{
+ E_INT = 1,
+ E_LONG = 2,
+ E_BYTE = 3,
+ E_BYTE_ARRAY = 4,
+ E_BYTE_ARRAY_BLOCK = 5
+}
+
+enum cram_DS_ID
+{
+ DS_CORE = 0,
+ DS_aux = 1,
+ DS_aux_OQ = 2,
+ DS_aux_BQ = 3,
+ DS_aux_BD = 4,
+ DS_aux_BI = 5,
+ DS_aux_FZ = 6,
+ DS_aux_oq = 7,
+ DS_aux_os = 8,
+ DS_aux_oz = 9,
+ DS_ref = 10,
+ DS_RN = 11,
+ DS_QS = 12,
+ DS_IN = 13,
+ DS_SC = 14,
+ DS_BF = 15,
+ DS_CF = 16,
+ DS_AP = 17,
+ DS_RG = 18,
+ DS_MQ = 19,
+ DS_NS = 20,
+ DS_MF = 21,
+ DS_TS = 22,
+ DS_NP = 23,
+ DS_NF = 24,
+ DS_RL = 25,
+ DS_FN = 26,
+ DS_FC = 27,
+ DS_FP = 28,
+ DS_DL = 29,
+ DS_BA = 30,
+ DS_BS = 31,
+ DS_TL = 32,
+ DS_RI = 33,
+ DS_RS = 34,
+ DS_PD = 35,
+ DS_HC = 36,
+ DS_BB = 37,
+ DS_QQ = 38,
+ DS_TN = 39,
+ DS_RN_len = 40,
+ DS_SC_len = 41,
+ DS_BB_len = 42,
+ DS_QQ_len = 43,
+ DS_TC = 44,
+ DS_TM = 45,
+ DS_TV = 46,
+ DS_END = 47
+}
+
+enum cram_block_method
+{
+ ERROR = -1,
+ RAW = 0,
+ GZIP = 1,
+ BZIP2 = 2,
+ LZMA = 3,
+ RANS = 4,
+ RANS0 = 4,
+ RANS1 = 10,
+ GZIP_RLE = 11
+}
+
+enum cram_content_type
+{
+ CT_ERROR = -1,
+ FILE_HEADER = 0,
+ COMPRESSION_HEADER = 1,
+ MAPPED_SLICE = 2,
+ UNMAPPED_SLICE = 3,
+ EXTERNAL = 4,
+ CORE = 5
+}
+
+enum cram_fields
+{
+ CRAM_BF = 1,
+ CRAM_AP = 2,
+ CRAM_FP = 4,
+ CRAM_RL = 8,
+ CRAM_DL = 16,
+ CRAM_NF = 32,
+ CRAM_BA = 64,
+ CRAM_QS = 128,
+ CRAM_FC = 256,
+ CRAM_FN = 512,
+ CRAM_BS = 1024,
+ CRAM_IN = 2048,
+ CRAM_RG = 4096,
+ CRAM_MQ = 8192,
+ CRAM_TL = 16384,
+ CRAM_RN = 32768,
+ CRAM_NS = 65536,
+ CRAM_NP = 131072,
+ CRAM_TS = 262144,
+ CRAM_MF = 524288,
+ CRAM_CF = 1048576,
+ CRAM_RI = 2097152,
+ CRAM_RS = 4194304,
+ CRAM_PD = 8388608,
+ CRAM_HC = 16777216,
+ CRAM_SC = 33554432,
+ CRAM_BB = 67108864,
+ CRAM_BB_len = 134217728,
+ CRAM_QQ = 268435456,
+ CRAM_QQ_len = 536870912,
+ CRAM_aux = 1073741824,
+ CRAM_ALL = 2147483647
+}
+
+struct __kstring_t
+{
+ size_t l;
+ size_t m;
+ char* s;
+}
+
+struct htsFormat
+{
+ enum htsFormatCategory
+ {
+ unknown_category = 0,
+ sequence_data = 1,
+ variant_data = 2,
+ index_file = 3,
+ region_list = 4,
+ category_maximum = 32767
+ }
+ htsFormatCategory category;
+ enum htsExactFormat
+ {
+ unknown_format = 0,
+ binary_format = 1,
+ text_format = 2,
+ sam = 3,
+ bam = 4,
+ bai = 5,
+ cram = 6,
+ crai = 7,
+ vcf = 8,
+ bcf = 9,
+ csi = 10,
+ gzi = 11,
+ tbi = 12,
+ bed = 13,
+ format_maximum = 32767
+ }
+ htsExactFormat format;
+ struct
+ {
+ short major;
+ short minor;
+ }
+ enum htsCompression
+ {
+ no_compression = 0,
+ gzip = 1,
+ bgzf = 2,
+ custom = 3,
+ compression_maximum = 32767
+ }
+ htsCompression compression;
+ short compression_level;
+ void* specific;
+}
+
+struct _Anonymous_0
+{
+ uint is_bin;
+ uint is_write;
+ uint is_be;
+ uint is_cram;
+ uint dummy;
+ long lineno;
+ kstring_t line;
+ char* fn;
+ char* fn_aux;
+ union
+ {
+ BGZF* bgzf;
+ cram_fd* cram;
+ hFILE* hfile;
+ void* voidp;
+ }
+ htsFormat format;
+}
+
+struct _Anonymous_1
+{
+ ulong u;
+ ulong v;
+}
+
+struct _Anonymous_2
+{
+ uint read_rest;
+ uint finished;
+ uint dummy;
+ int tid;
+ int beg;
+ int end;
+ int n_off;
+ int i;
+ int curr_tid;
+ int curr_beg;
+ int curr_end;
+ ulong curr_off;
+ hts_pair64_t* off;
+ int function (BGZF*, void*, void*, int*, int*, int*) readrec;
+ struct
+ {
+ int n;
+ int m;
+ int* a;
+ }
+}
+
+struct _Anonymous_3
+{
+ int n_targets;
+ int ignore_sam_err;
+ uint l_text;
+ uint* target_len;
+ byte* cigar_tab;
+ char** target_name;
+ char* text;
+ void* sdict;
+}
+
+struct _Anonymous_4
+{
+ int tid;
+ int pos;
+ ushort bin;
+ ubyte qual;
+ ubyte l_qname;
+ ushort flag;
+ ushort n_cigar;
+ int l_qseq;
+ int mtid;
+ int mpos;
+ int isize;
+}
+
+struct _Anonymous_5
+{
+ bam1_core_t core;
+ int l_data;
+ int m_data;
+ ubyte* data;
+ ulong id;
+}
+
+struct _Anonymous_6
+{
+ bam1_t* b;
+ int qpos;
+ int indel;
+ int level;
+ uint is_del;
+ uint is_head;
+ uint is_tail;
+ uint is_refskip;
+ uint aux;
+}
+
+struct _Anonymous_7
+{
+ char* str;
+ size_t used;
+}
+
+struct _Anonymous_8
+{
+ size_t max_length;
+ size_t nstrings;
+ string_t* strings;
+}
+
+struct _Anonymous_9
+{
+ void* pool;
+ size_t used;
+}
+
+struct _Anonymous_10
+{
+ size_t dsize;
+ size_t npools;
+ pool_t* pools;
+ void* free;
+}
+
+struct _Anonymous_11
+{
+ ulong[4] tab;
+ int sep;
+ int finished;
+ const(char)* p;
+}
+
+struct SAM_hdr_tag_s
+{
+ SAM_hdr_tag_s* next;
+ char* str;
+ int len;
+}
+
+struct SAM_hdr_item_s
+{
+ SAM_hdr_item_s* next;
+ SAM_hdr_item_s* prev;
+ SAM_hdr_tag* tag;
+ int order;
+}
+
+struct _Anonymous_12
+{
+ char* name;
+ uint len;
+ SAM_hdr_type* ty;
+ SAM_hdr_tag* tag;
+}
+
+struct _Anonymous_13
+{
+ char* name;
+ SAM_hdr_type* ty;
+ SAM_hdr_tag* tag;
+ int name_len;
+ int id;
+}
+
+struct _Anonymous_14
+{
+ char* name;
+ SAM_hdr_type* ty;
+ SAM_hdr_tag* tag;
+ int name_len;
+ int id;
+ int prev_id;
+}
+
+struct kh_sam_hdr_s
+{
+ khint_t n_buckets;
+ khint_t size;
+ khint_t n_occupied;
+ khint_t upper_bound;
+ khint32_t* flags;
+ khint32_t* keys;
+ SAM_hdr_type** vals;
+}
+
+struct kh_m_s2i_s
+{
+ khint_t n_buckets;
+ khint_t size;
+ khint_t n_occupied;
+ khint_t upper_bound;
+ khint32_t* flags;
+ kh_cstr_t* keys;
+ int* vals;
+}
+
+struct _Anonymous_15
+{
+ kstring_t text;
+ kh_sam_hdr_t* h;
+ string_alloc_t* str_pool;
+ pool_alloc_t* type_pool;
+ pool_alloc_t* tag_pool;
+ int nref;
+ SAM_SQ* ref_;
+ kh_m_s2i_t* ref_hash;
+ int nrg;
+ SAM_RG* rg;
+ kh_m_s2i_t* rg_hash;
+ int npg;
+ int npg_end;
+ int npg_end_alloc;
+ SAM_PG* pg;
+ kh_m_s2i_t* pg_hash;
+ int* pg_end;
+ sam_sort_order sort_order;
+ char[1024] ID_buf;
+ int ID_cnt;
+ int ref_count;
+}
+
+struct t_pool_job
+{
+ void* function (void*) func;
+ void* arg;
+ t_pool_job* next;
+ t_pool* p;
+ t_results_queue* q;
+ int serial;
+}
+
+struct t_res
+{
+ t_res* next;
+ int serial;
+ void* data;
+}
+
+struct _Anonymous_16
+{
+ t_pool* p;
+ int idx;
+ pthread_t tid;
+ pthread_cond_t pending_c;
+ long wait_time;
+}
+
+struct t_pool
+{
+ int qsize;
+ int njobs;
+ int nwaiting;
+ int shutdown;
+ t_pool_job* head;
+ t_pool_job* tail;
+ int tsize;
+ t_pool_worker_t* t;
+ pthread_mutex_t pool_m;
+ pthread_cond_t empty_c;
+ pthread_cond_t pending_c;
+ pthread_cond_t full_c;
+ int* t_stack;
+ int t_stack_top;
+ long total_time;
+ long wait_time;
+}
+
+struct t_results_queue
+{
+ t_pool_result* result_head;
+ t_pool_result* result_tail;
+ int next_serial;
+ int curr_serial;
+ int queue_len;
+ int pending;
+ pthread_mutex_t result_m;
+ pthread_cond_t result_avail_c;
+}
+
+struct _Anonymous_17
+{
+ FILE* fp;
+ char* data;
+ size_t alloced;
+ int eof;
+ int mode;
+ size_t size;
+ size_t offset;
+ size_t flush_pos;
+}
+
+struct kh_m_i2i_s
+{
+ khint_t n_buckets;
+ khint_t size;
+ khint_t n_occupied;
+ khint_t upper_bound;
+ khint32_t* flags;
+ khint32_t* keys;
+ int* vals;
+}
+
+struct kh_s_i2i_s
+{
+ khint_t n_buckets;
+ khint_t size;
+ khint_t n_occupied;
+ khint_t upper_bound;
+ khint32_t* flags;
+ khint32_t* keys;
+ char* vals;
+}
+
+struct kh_map_s
+{
+ khint_t n_buckets;
+ khint_t size;
+ khint_t n_occupied;
+ khint_t upper_bound;
+ khint32_t* flags;
+ kh_cstr_t* keys;
+ pmap_t* vals;
+}
+
+struct _Anonymous_19
+{
+ int[1024] freqs;
+ kh_m_i2i_t* h;
+ int nsamp;
+ int nvals;
+}
+
+struct _Anonymous_20
+{
+ char[4] magic;
+ ubyte major_version;
+ ubyte minor_version;
+ char[20] file_id;
+}
+
+struct _Anonymous_21
+{
+ int trial;
+ int next_trial;
+ int sz_gz_rle;
+ int sz_gz_def;
+ int sz_rans0;
+ int sz_rans1;
+ int sz_bzip2;
+ int sz_lzma;
+ int method;
+ int strat;
+ int gz_rle_cnt;
+ int gz_def_cnt;
+ int rans0_cnt;
+ int rans1_cnt;
+ int bzip2_cnt;
+ int lzma_cnt;
+ int revised_method;
+ double gz_rle_extra;
+ double gz_def_extra;
+ double rans0_extra;
+ double rans1_extra;
+ double bzip2_extra;
+ double lzma_extra;
+}
+
+struct _Anonymous_22
+{
+ enum cram_block_method
+ {
+ ERROR = -1,
+ RAW = 0,
+ GZIP = 1,
+ BZIP2 = 2,
+ LZMA = 3,
+ RANS = 4,
+ RANS0 = 4,
+ RANS1 = 10,
+ GZIP_RLE = 11
+ }
+ cram_block_method method;
+ cram_block_method orig_method;
+ enum cram_content_type
+ {
+ CT_ERROR = -1,
+ FILE_HEADER = 0,
+ COMPRESSION_HEADER = 1,
+ MAPPED_SLICE = 2,
+ UNMAPPED_SLICE = 3,
+ EXTERNAL = 4,
+ CORE = 5
+ }
+ cram_content_type content_type;
+ int content_id;
+ int comp_size;
+ int uncomp_size;
+ uint crc32;
+ int idx;
+ ubyte* data;
+ size_t alloc;
+ size_t byte_;
+ int bit;
+}
+
+struct _Anonymous_23
+{
+ int ref_seq_id;
+ int ref_seq_start;
+ int ref_seq_span;
+ int num_records;
+ int num_landmarks;
+ int* landmark;
+ int mapped_qs_included;
+ int unmapped_qs_included;
+ int unmapped_placed;
+ int qs_included;
+ int read_names_included;
+ int AP_delta;
+ char[4][5] substitution_matrix;
+ cram_block* TD_blk;
+ int nTL;
+ ubyte** TL;
+ kh_m_s2i_t* TD_hash;
+ string_alloc_t* TD_keys;
+ kh_map_t* preservation_map;
+ cram_map*[32] rec_encoding_map;
+ cram_map*[32] tag_encoding_map;
+ cram_codec*[47] codecs;
+ char* uncomp;
+ size_t uncomp_size;
+ size_t uncomp_alloc;
+ uint data_series;
+}
+
+struct cram_map
+{
+ int key;
+ enum cram_encoding
+ {
+ E_NULL = 0,
+ E_EXTERNAL = 1,
+ E_GOLOMB = 2,
+ E_HUFFMAN = 3,
+ E_BYTE_ARRAY_LEN = 4,
+ E_BYTE_ARRAY_STOP = 5,
+ E_BETA = 6,
+ E_SUBEXP = 7,
+ E_GOLOMB_RICE = 8,
+ E_GAMMA = 9
+ }
+ cram_encoding encoding;
+ int offset;
+ int size;
+ cram_codec* codec;
+ cram_map* next;
+}
+
+struct _Anonymous_24
+{
+ enum cram_content_type
+ {
+ CT_ERROR = -1,
+ FILE_HEADER = 0,
+ COMPRESSION_HEADER = 1,
+ MAPPED_SLICE = 2,
+ UNMAPPED_SLICE = 3,
+ EXTERNAL = 4,
+ CORE = 5
+ }
+ cram_content_type content_type;
+ int ref_seq_id;
+ int ref_seq_start;
+ int ref_seq_span;
+ int num_records;
+ long record_counter;
+ int num_blocks;
+ int num_content_ids;
+ int* block_content_ids;
+ int ref_base_id;
+ ubyte[16] md5;
+}
+
+struct _Anonymous_25
+{
+ int length;
+ int ref_seq_id;
+ int ref_seq_start;
+ int ref_seq_span;
+ long record_counter;
+ long num_bases;
+ int num_records;
+ int num_blocks;
+ int num_landmarks;
+ int* landmark;
+ size_t offset;
+ cram_block_compression_hdr* comp_hdr;
+ cram_block* comp_hdr_block;
+ int max_slice;
+ int curr_slice;
+ int max_rec;
+ int curr_rec;
+ int max_c_rec;
+ int curr_c_rec;
+ int slice_rec;
+ int curr_ref;
+ int last_pos;
+ cram_slice** slices;
+ cram_slice* slice;
+ int pos_sorted;
+ int max_apos;
+ int last_slice;
+ int multi_seq;
+ int unsorted;
+ int ref_start;
+ int first_base;
+ int last_base;
+ int ref_id;
+ int ref_end;
+ char* ref_;
+ bam_seq_t** bams;
+ cram_stats*[47] stats;
+ kh_s_i2i_t* tags_used;
+ int* refs_used;
+ uint crc32;
+}
+
+struct _Anonymous_26
+{
+ cram_slice* s;
+ int ref_id;
+ int flags;
+ int cram_flags;
+ int len;
+ int apos;
+ int rg;
+ int name;
+ int name_len;
+ int mate_line;
+ int mate_ref_id;
+ int mate_pos;
+ int tlen;
+ int ntags;
+ int aux;
+ int aux_size;
+ int TN_idx;
+ int TL;
+ int seq;
+ int qual;
+ int cigar;
+ int ncigar;
+ int aend;
+ int mqual;
+ int feature;
+ int nfeature;
+ int mate_flags;
+}
+
+struct _Anonymous_27
+{
+}
+
+struct cram_slice
+{
+ cram_block_slice_hdr* hdr;
+ cram_block* hdr_block;
+ cram_block** block;
+ cram_block** block_by_id;
+ int last_apos;
+ int max_apos;
+ cram_record* crecs;
+ uint* cigar;
+ uint cigar_alloc;
+ uint ncigar;
+ cram_feature* features;
+ int nfeatures;
+ int afeatures;
+ uint* TN;
+ int nTN;
+ int aTN;
+ cram_block* name_blk;
+ cram_block* seqs_blk;
+ cram_block* qual_blk;
+ cram_block* base_blk;
+ cram_block* soft_blk;
+ cram_block* aux_blk;
+ cram_block* aux_OQ_blk;
+ cram_block* aux_BQ_blk;
+ cram_block* aux_BD_blk;
+ cram_block* aux_BI_blk;
+ cram_block* aux_FZ_blk;
+ cram_block* aux_oq_blk;
+ cram_block* aux_os_blk;
+ cram_block* aux_oz_blk;
+ string_alloc_t* pair_keys;
+ kh_m_s2i_t*[2] pair;
+ char* ref_;
+ int ref_start;
+ int ref_end;
+ int ref_id;
+}
+
+struct ref_entry
+{
+ char* name;
+ char* fn;
+ long length;
+ long offset;
+ int bases_per_line;
+ int line_length;
+ long count;
+ char* seq;
+ mFILE* mf;
+}
+
+struct kh_refs_s
+{
+ khint_t n_buckets;
+ khint_t size;
+ khint_t n_occupied;
+ khint_t upper_bound;
+ khint32_t* flags;
+ kh_cstr_t* keys;
+ ref_entry** vals;
+}
+
+alias kh_refs_s kh_refs_t;
+
+struct _Anonymous_28
+{
+ string_alloc_t* pool;
+ kh_refs_t* h_meta;
+ ref_entry** ref_id;
+ int nref;
+ char* fn;
+ BGZF* fp;
+ int count;
+ pthread_mutex_t lock;
+ ref_entry* last;
+ int last_id;
+}
+
+struct cram_index
+{
+ int nslice;
+ int nalloc;
+ cram_index* e;
+ int refid;
+ int start;
+ int end;
+ int nseq;
+ int slice;
+ int len;
+ long offset;
+}
+
+struct _Anonymous_29
+{
+ int refid;
+ int start;
+ int end;
+}
+
+struct spare_bams
+{
+ bam_seq_t** bams;
+ spare_bams* next;
+}
+
+struct cram_fd
+{
+ hFILE* fp;
+ int mode;
+ int version_;
+ cram_file_def* file_def;
+ SAM_hdr* header;
+ char* prefix;
+ long record_counter;
+ int err;
+ cram_container* ctr;
+ int first_base;
+ int last_base;
+ refs_t* refs;
+ char* ref_;
+ char* ref_free;
+ int ref_id;
+ int ref_start;
+ int ref_end;
+ char* ref_fn;
+ int level;
+ cram_metrics*[47] m;
+ int decode_md;
+ int verbose;
+ int seqs_per_slice;
+ int slices_per_container;
+ int embed_ref;
+ int no_ref;
+ int ignore_md5;
+ int use_bz2;
+ int use_rans;
+ int use_lzma;
+ int shared_ref;
+ uint required_fields;
+ cram_range range;
+ uint[4096] bam_flag_swap;
+ uint[4096] cram_flag_swap;
+ ubyte[256] L1;
+ ubyte[256] L2;
+ char[32][32] cram_sub_matrix;
+ int index_sz;
+ cram_index* index;
+ off_t first_container;
+ int eof;
+ int last_slice;
+ int multi_seq;
+ int unsorted;
+ int empty_container;
+ int own_pool;
+ t_pool* pool;
+ t_results_queue* rqueue;
+ pthread_mutex_t metrics_lock;
+ pthread_mutex_t ref_lock;
+ spare_bams* bl;
+ pthread_mutex_t bam_list_lock;
+ void* job_pending;
+ int ooc;
+}
+
+struct _Anonymous_30
+{
+ int symbol;
+ int p;
+ int code;
+ int len;
+}
+
+struct _Anonymous_31
+{
+ int ncodes;
+ cram_huffman_code* codes;
+}
+
+struct _Anonymous_32
+{
+ cram_huffman_code* codes;
+ int nvals;
+ int[129] val2code;
+}
+
+struct _Anonymous_33
+{
+ int offset;
+ int nbits;
+}
+
+struct _Anonymous_34
+{
+ int offset;
+}
+
+struct _Anonymous_35
+{
+ int offset;
+ int k;
+}
+
+struct _Anonymous_36
+{
+ int content_id;
+ enum cram_external_type
+ {
+ E_INT = 1,
+ E_LONG = 2,
+ E_BYTE = 3,
+ E_BYTE_ARRAY = 4,
+ E_BYTE_ARRAY_BLOCK = 5
+ }
+ cram_external_type type;
+}
+
+struct _Anonymous_37
+{
+ cram_codec* len_codec;
+ cram_codec* value_codec;
+}
+
+struct _Anonymous_38
+{
+ ubyte stop;
+ int content_id;
+}
+
+struct _Anonymous_39
+{
+ enum cram_encoding
+ {
+ E_NULL = 0,
+ E_EXTERNAL = 1,
+ E_GOLOMB = 2,
+ E_HUFFMAN = 3,
+ E_BYTE_ARRAY_LEN = 4,
+ E_BYTE_ARRAY_STOP = 5,
+ E_BETA = 6,
+ E_SUBEXP = 7,
+ E_GOLOMB_RICE = 8,
+ E_GAMMA = 9
+ }
+ cram_encoding len_encoding;
+ cram_encoding val_encoding;
+ void* len_dat;
+ void* val_dat;
+ cram_codec* len_codec;
+ cram_codec* val_codec;
+}
+
+struct cram_codec
+{
+ enum cram_encoding
+ {
+ E_NULL = 0,
+ E_EXTERNAL = 1,
+ E_GOLOMB = 2,
+ E_HUFFMAN = 3,
+ E_BYTE_ARRAY_LEN = 4,
+ E_BYTE_ARRAY_STOP = 5,
+ E_BETA = 6,
+ E_SUBEXP = 7,
+ E_GOLOMB_RICE = 8,
+ E_GAMMA = 9
+ }
+ cram_encoding codec;
+ cram_block* out_;
+ void function (cram_codec*) free;
+ int function (cram_slice*, cram_codec*, cram_block*, char*, int*) decode;
+ int function (cram_slice*, cram_codec*, char*, int) encode;
+ int function (cram_codec*, cram_block*, char*, int) store;
+}
+
+struct hFILE;
+
+
+struct __bam_plp_t;
+
+
+struct BGZF;
+
+
+struct __bam_mplp_t;
+
+
+struct __hts_idx_t;
+
+
+struct hts_md5_context;
+
+
+union _Anonymous_18
+{
+ int i;
+ char* p;
+}
+
+const(char)* hts_version ();
+int hts_detect_format (hFILE* fp, htsFormat* fmt);
+const(char)* hts_format_description (const(htsFormat)* format);
+htsFile* hts_open (const(char)* fn, const(char)* mode);
+htsFile* hts_hopen (hFILE* fp, const(char)* fn, const(char)* mode);
+int hts_close (htsFile* fp);
+const(htsFormat)* hts_get_format (htsFile* fp);
+int hts_set_opt (htsFile* fp, cram_option opt, ...);
+int hts_getline (htsFile* fp, int delimiter, kstring_t* str);
+char** hts_readlines (const(char)* fn, int* _n);
+char** hts_readlist (const(char)* fn, int is_file, int* _n);
+int hts_set_threads (htsFile* fp, int n);
+int hts_set_fai_filename (htsFile* fp, const(char)* fn_aux);
+hts_idx_t* hts_idx_init (int n, int fmt, ulong offset0, int min_shift, int n_lvls);
+void hts_idx_destroy (hts_idx_t* idx);
+int hts_idx_push (hts_idx_t* idx, int tid, int beg, int end, ulong offset, int is_mapped);
+void hts_idx_finish (hts_idx_t* idx, ulong final_offset);
+void hts_idx_save (const(hts_idx_t)* idx, const(char)* fn, int fmt);
+hts_idx_t* hts_idx_load (const(char)* fn, int fmt);
+ubyte* hts_idx_get_meta (hts_idx_t* idx, int* l_meta);
+void hts_idx_set_meta (hts_idx_t* idx, int l_meta, ubyte* meta, int is_copy);
+int hts_idx_get_stat (const(hts_idx_t)* idx, int tid, ulong* mapped, ulong* unmapped);
+ulong hts_idx_get_n_no_coor (const(hts_idx_t)* idx);
+long hts_parse_decimal (const(char)* str, char** end);
+const(char)* hts_parse_reg (const(char)* str, int* beg, int* end);
+hts_itr_t* hts_itr_query (const(hts_idx_t)* idx, int tid, int beg, int end, int function (BGZF*, void*, void*, int*, int*, int*) readrec);
+void hts_itr_destroy (hts_itr_t* iter);
+hts_itr_t* hts_itr_querys (const(hts_idx_t)* idx, const(char)* reg, hts_name2id_f getid, void* hdr, hts_itr_t* function (const(hts_idx_t)*, int, int, int, int function (BGZF*, void*, void*, int*, int*, int*)) itr_query, int function (BGZF*, void*, void*, int*, int*, int*) readrec);
+int hts_itr_next (BGZF* fp, hts_itr_t* iter, void* r, void* data);
+const(char*)* hts_idx_seqnames (const(hts_idx_t)* idx, int* n, hts_id2name_f getid, void* hdr);
+int hts_file_type (const(char)* fname);
+hts_md5_context* hts_md5_init ();
+void hts_md5_update (hts_md5_context* ctx, const(void)* data, c_ulong size);
+void hts_md5_final (ubyte* digest, hts_md5_context* ctx);
+void hts_md5_reset (hts_md5_context* ctx);
+void hts_md5_hex (char* hex, const(ubyte)* digest);
+void hts_md5_destroy (hts_md5_context* ctx);
+int hts_reg2bin (long beg, long end, int min_shift, int n_lvls);
+int hts_bin_bot (int bin, int n_lvls);
+int ed_is_big ();
+ushort ed_swap_2 (ushort v);
+void* ed_swap_2p (void* x);
+uint ed_swap_4 (uint v);
+void* ed_swap_4p (void* x);
+ulong ed_swap_8 (ulong v);
+void* ed_swap_8p (void* x);
+bam_hdr_t* bam_hdr_init ();
+bam_hdr_t* bam_hdr_read (BGZF* fp);
+int bam_hdr_write (BGZF* fp, const(bam_hdr_t)* h);
+void bam_hdr_destroy (bam_hdr_t* h);
+int bam_name2id (bam_hdr_t* h, const(char)* ref_);
+bam_hdr_t* bam_hdr_dup (const(bam_hdr_t)* h0);
+bam1_t* bam_init1 ();
+void bam_destroy1 (bam1_t* b);
+int bam_read1 (BGZF* fp, bam1_t* b);
+int bam_write1 (BGZF* fp, const(bam1_t)* b);
+bam1_t* bam_copy1 (bam1_t* bdst, const(bam1_t)* bsrc);
+bam1_t* bam_dup1 (const(bam1_t)* bsrc);
+int bam_cigar2qlen (int n_cigar, const(uint)* cigar);
+int bam_cigar2rlen (int n_cigar, const(uint)* cigar);
+int bam_endpos (const(bam1_t)* b);
+int bam_str2flag (const(char)* str);
+char* bam_flag2str (int flag);
+int bam_index_build (const(char)* fn, int min_shift);
+hts_idx_t* sam_index_load (htsFile* fp, const(char)* fn);
+hts_itr_t* sam_itr_queryi (const(hts_idx_t)* idx, int tid, int beg, int end);
+hts_itr_t* sam_itr_querys (const(hts_idx_t)* idx, bam_hdr_t* hdr, const(char)* region);
+int sam_open_mode (char* mode, const(char)* fn, const(char)* format);
+bam_hdr_t* sam_hdr_parse (int l_text, const(char)* text);
+bam_hdr_t* sam_hdr_read (samFile* fp);
+int sam_hdr_write (samFile* fp, const(bam_hdr_t)* h);
+int sam_parse1 (kstring_t* s, bam_hdr_t* h, bam1_t* b);
+int sam_format1 (const(bam_hdr_t)* h, const(bam1_t)* b, kstring_t* str);
+int sam_read1 (samFile* fp, bam_hdr_t* h, bam1_t* b);
+int sam_write1 (samFile* fp, const(bam_hdr_t)* h, const(bam1_t)* b);
+ubyte* bam_aux_get (const(bam1_t)* b, const char[2] tag);
+int bam_aux2i (const(ubyte)* s);
+double bam_aux2f (const(ubyte)* s);
+char bam_aux2A (const(ubyte)* s);
+char* bam_aux2Z (const(ubyte)* s);
+void bam_aux_append (bam1_t* b, const char[2] tag, char type, int len, ubyte* data);
+int bam_aux_del (bam1_t* b, ubyte* s);
+bam_plp_t bam_plp_init (bam_plp_auto_f func, void* data);
+void bam_plp_destroy (bam_plp_t iter);
+int bam_plp_push (bam_plp_t iter, const(bam1_t)* b);
+const(bam_pileup1_t)* bam_plp_next (bam_plp_t iter, int* _tid, int* _pos, int* _n_plp);
+const(bam_pileup1_t)* bam_plp_auto (bam_plp_t iter, int* _tid, int* _pos, int* _n_plp);
+void bam_plp_set_maxcnt (bam_plp_t iter, int maxcnt);
+void bam_plp_reset (bam_plp_t iter);
+bam_mplp_t bam_mplp_init (int n, bam_plp_auto_f func, void** data);
+void bam_mplp_init_overlaps (bam_mplp_t iter);
+void bam_mplp_destroy (bam_mplp_t iter);
+void bam_mplp_set_maxcnt (bam_mplp_t iter, int maxcnt);
+int bam_mplp_auto (bam_mplp_t iter, int* _tid, int* _pos, int* n_plp, const(bam_pileup1_t*)* plp);
+string_alloc_t* string_pool_create (size_t max_length);
+void string_pool_destroy (string_alloc_t* a_str);
+char* string_alloc (string_alloc_t* a_str, size_t length);
+char* string_dup (string_alloc_t* a_str, char* instr);
+char* string_ndup (string_alloc_t* a_str, char* instr, size_t len);
+pool_alloc_t* pool_create (size_t dsize);
+void pool_destroy (pool_alloc_t* p);
+void* pool_alloc (pool_alloc_t* p);
+void pool_free (pool_alloc_t* p, void* ptr);
+khint_t __ac_X31_hash_string (const(char)* s);
+khint_t __ac_Wang_hash (khint_t key);
+int kvsprintf (kstring_t* s, const(char)* fmt, va_list ap);
+int ksprintf (kstring_t* s, const(char)* fmt, ...);
+int ksplit_core (char* s, int delimiter, int* _max, int** _offsets);
+char* kstrstr (const(char)* str, const(char)* pat, int** _prep);
+char* kstrnstr (const(char)* str, const(char)* pat, int n, int** _prep);
+void* kmemmem (const(void)* _str, int n, const(void)* _pat, int m, int** _prep);
+char* kstrtok (const(char)* str, const(char)* sep, ks_tokaux_t* aux);
+int ks_resize (kstring_t* s, size_t size);
+char* ks_str (kstring_t* s);
+size_t ks_len (kstring_t* s);
+char* ks_release (kstring_t* s);
+int kputsn (const(char)* p, int l, kstring_t* s);
+int kputs (const(char)* p, kstring_t* s);
+int kputc (int c, kstring_t* s);
+int kputc_ (int c, kstring_t* s);
+int kputsn_ (const(void)* p, int l, kstring_t* s);
+int kputw (int c, kstring_t* s);
+int kputuw (uint c, kstring_t* s);
+int kputl (c_long c, kstring_t* s);
+int* ksplit (kstring_t* s, int delimiter, int* n);
+kh_sam_hdr_t* kh_init_sam_hdr ();
+void kh_destroy_sam_hdr (kh_sam_hdr_t* h);
+void kh_clear_sam_hdr (kh_sam_hdr_t* h);
+khint_t kh_get_sam_hdr (const(kh_sam_hdr_t)* h, khint32_t key);
+int kh_resize_sam_hdr (kh_sam_hdr_t* h, khint_t new_n_buckets);
+khint_t kh_put_sam_hdr (kh_sam_hdr_t* h, khint32_t key, int* ret);
+void kh_del_sam_hdr (kh_sam_hdr_t* h, khint_t x);
+kh_m_s2i_t* kh_init_m_s2i ();
+void kh_destroy_m_s2i (kh_m_s2i_t* h);
+void kh_clear_m_s2i (kh_m_s2i_t* h);
+khint_t kh_get_m_s2i (const(kh_m_s2i_t)* h, kh_cstr_t key);
+int kh_resize_m_s2i (kh_m_s2i_t* h, khint_t new_n_buckets);
+khint_t kh_put_m_s2i (kh_m_s2i_t* h, kh_cstr_t key, int* ret);
+void kh_del_m_s2i (kh_m_s2i_t* h, khint_t x);
+SAM_hdr* sam_hdr_new ();
+SAM_hdr* sam_hdr_parse_ (const(char)* hdr, int len);
+SAM_hdr* sam_hdr_dup (SAM_hdr* hdr);
+void sam_hdr_incr_ref (SAM_hdr* hdr);
+void sam_hdr_decr_ref (SAM_hdr* hdr);
+void sam_hdr_free (SAM_hdr* hdr);
+int sam_hdr_length (SAM_hdr* hdr);
+char* sam_hdr_str (SAM_hdr* hdr);
+int sam_hdr_add_lines (SAM_hdr* sh, const(char)* lines, int len);
+int sam_hdr_add (SAM_hdr* sh, const(char)* type, ...);
+int sam_hdr_vadd (SAM_hdr* sh, const(char)* type, va_list ap, ...);
+SAM_hdr_type* sam_hdr_find (SAM_hdr* hdr, char* type, char* ID_key, char* ID_value);
+char* sam_hdr_find_line (SAM_hdr* hdr, char* type, char* ID_key, char* ID_value);
+SAM_hdr_tag* sam_hdr_find_key (SAM_hdr* sh, SAM_hdr_type* type, char* key, SAM_hdr_tag** prev);
+int sam_hdr_update (SAM_hdr* hdr, SAM_hdr_type* type, ...);
+sam_sort_order sam_hdr_sort_order (SAM_hdr* hdr);
+int sam_hdr_rebuild (SAM_hdr* hdr);
+int sam_hdr_name2ref (SAM_hdr* hdr, const(char)* ref_);
+SAM_RG* sam_hdr_find_rg (SAM_hdr* hdr, const(char)* rg);
+int sam_hdr_link_pg (SAM_hdr* hdr);
+int sam_hdr_add_PG (SAM_hdr* sh, const(char)* name, ...);
+bam_hdr_t* cram_header_to_bam (SAM_hdr* h);
+SAM_hdr* bam_header_to_cram (bam_hdr_t* h);
+int bam_construct_seq (bam_seq_t** bp, size_t extra_len, const(char)* qname, size_t qname_len, int flag, int rname, int pos, int end, int mapq, uint ncigar, const(uint)* cigar, int mrnm, int mpos, int isize, int len, const(char)* seq, const(char)* qual);
+t_pool* t_pool_init (int qsize, int tsize);
+int t_pool_dispatch (t_pool* p, t_results_queue* q, void* function (void*) func, void* arg);
+int t_pool_dispatch2 (t_pool* p, t_results_queue* q, void* function (void*) func, void* arg, int nonblock);
+int t_pool_flush (t_pool* p);
+void t_pool_destroy (t_pool* p, int kill);
+t_pool_result* t_pool_next_result (t_results_queue* q);
+t_pool_result* t_pool_next_result_wait (t_results_queue* q);
+void t_pool_delete_result (t_pool_result* r, int free_data);
+t_results_queue* t_results_queue_init ();
+void t_results_queue_destroy (t_results_queue* q);
+int t_pool_results_queue_empty (t_results_queue* q);
+int t_pool_results_queue_len (t_results_queue* q);
+int t_pool_results_queue_sz (t_results_queue* q);
+mFILE* mfreopen (const(char)* path, const(char)* mode, FILE* fp);
+mFILE* mfopen (const(char)* path, const(char)* mode);
+int mfdetach (mFILE* mf);
+int mfclose (mFILE* mf);
+int mfdestroy (mFILE* mf);
+int mfseek (mFILE* mf, c_long offset, int whence);
+c_long mftell (mFILE* mf);
+void mrewind (mFILE* mf);
+void mftruncate (mFILE* mf, c_long offset);
+int mfeof (mFILE* mf);
+size_t mfread (void* ptr, size_t size, size_t nmemb, mFILE* mf);
+size_t mfwrite (void* ptr, size_t size, size_t nmemb, mFILE* mf);
+int mfgetc (mFILE* mf);
+int mungetc (int c, mFILE* mf);
+mFILE* mfcreate (char* data, int size);
+mFILE* mfcreate_from (const(char)* path, const(char)* mode_str, FILE* fp);
+void mfrecreate (mFILE* mf, char* data, int size);
+void* mfsteal (mFILE* mf, size_t* size_out);
+char* mfgets (char* s, int size, mFILE* mf);
+int mfflush (mFILE* mf);
+int mfprintf (mFILE* mf, char* fmt, ...);
+mFILE* mstdin ();
+mFILE* mstdout ();
+mFILE* mstderr ();
+void mfascii (mFILE* mf);
+kh_m_i2i_t* kh_init_m_i2i ();
+void kh_destroy_m_i2i (kh_m_i2i_t* h);
+void kh_clear_m_i2i (kh_m_i2i_t* h);
+khint_t kh_get_m_i2i (const(kh_m_i2i_t)* h, khint32_t key);
+int kh_resize_m_i2i (kh_m_i2i_t* h, khint_t new_n_buckets);
+khint_t kh_put_m_i2i (kh_m_i2i_t* h, khint32_t key, int* ret);
+void kh_del_m_i2i (kh_m_i2i_t* h, khint_t x);
+kh_s_i2i_t* kh_init_s_i2i ();
+void kh_destroy_s_i2i (kh_s_i2i_t* h);
+void kh_clear_s_i2i (kh_s_i2i_t* h);
+khint_t kh_get_s_i2i (const(kh_s_i2i_t)* h, khint32_t key);
+int kh_resize_s_i2i (kh_s_i2i_t* h, khint_t new_n_buckets);
+khint_t kh_put_s_i2i (kh_s_i2i_t* h, khint32_t key, int* ret);
+void kh_del_s_i2i (kh_s_i2i_t* h, khint_t x);
+kh_map_t* kh_init_map ();
+void kh_destroy_map (kh_map_t* h);
+void kh_clear_map (kh_map_t* h);
+khint_t kh_get_map (const(kh_map_t)* h, kh_cstr_t key);
+int kh_resize_map (kh_map_t* h, khint_t new_n_buckets);
+khint_t kh_put_map (kh_map_t* h, kh_cstr_t key, int* ret);
+void kh_del_map (kh_map_t* h, khint_t x);
+kh_refs_t* kh_init_refs ();
+void kh_destroy_refs (kh_refs_t* h);
+void kh_clear_refs (kh_refs_t* h);
+khint_t kh_get_refs (const(kh_refs_t)* h, kh_cstr_t key);
+int kh_resize_refs (kh_refs_t* h, khint_t new_n_buckets);
+khint_t kh_put_refs (kh_refs_t* h, kh_cstr_t key, int* ret);
+void kh_del_refs (kh_refs_t* h, khint_t x);
+int is_directory (char* fn);
+int is_file (char* fn);
+int file_size (char* fn);
+int itf8_decode (cram_fd* fd, int* val);
+int ltf8_get (char* cp, long* val_p);
+int ltf8_put (char* cp, long val);
+int itf8_put_blk (cram_block* blk, int val);
+cram_block* cram_new_block (cram_content_type content_type, int content_id);
+cram_block* cram_read_block (cram_fd* fd);
+int cram_write_block (cram_fd* fd, cram_block* b);
+void cram_free_block (cram_block* b);
+char* zlib_mem_inflate (char* cdata, size_t csize, size_t* size);
+int cram_uncompress_block (cram_block* b);
+int cram_compress_block (cram_fd* fd, cram_block* b, cram_metrics* metrics, int method, int level);
+cram_metrics* cram_new_metrics ();
+char* cram_block_method2str (cram_block_method m);
+char* cram_content_type2str (cram_content_type t);
+ubyte* append_uint32 (ubyte* cp, uint i);
+ubyte* append_sub32 (ubyte* cp, uint i);
+ubyte* append_uint64 (ubyte* cp, ulong i);
+int cram_load_reference (cram_fd* fd, const(char)* fn);
+int refs2id (refs_t* r, SAM_hdr* bfd);
+void refs_free (refs_t* r);
+char* cram_get_ref (cram_fd* fd, int id, int start, int end);
+void cram_ref_incr (refs_t* r, int id);
+void cram_ref_decr (refs_t* r, int id);
+cram_container* cram_new_container (int nrec, int nslice);
+void cram_free_container (cram_container* c);
+cram_container* cram_read_container (cram_fd* fd);
+int cram_write_container (cram_fd* fd, cram_container* h);
+int cram_flush_container (cram_fd* fd, cram_container* c);
+int cram_flush_container_mt (cram_fd* fd, cram_container* c);
+cram_block_compression_hdr* cram_new_compression_header ();
+void cram_free_compression_header (cram_block_compression_hdr* hdr);
+void cram_free_slice_header (cram_block_slice_hdr* hdr);
+void cram_free_slice (cram_slice* s);
+cram_slice* cram_new_slice (cram_content_type type, int nrecs);
+cram_slice* cram_read_slice (cram_fd* fd);
+cram_file_def* cram_read_file_def (cram_fd* fd);
+int cram_write_file_def (cram_fd* fd, cram_file_def* def);
+void cram_free_file_def (cram_file_def* def);
+SAM_hdr* cram_read_SAM_hdr (cram_fd* fd);
+int cram_write_SAM_hdr (cram_fd* fd, SAM_hdr* hdr);
+cram_fd* cram_open (const(char)* filename, const(char)* mode);
+cram_fd* cram_dopen (hFILE* fp, const(char)* filename, const(char)* mode);
+int cram_close (cram_fd* fd);
+int cram_seek (cram_fd* fd, off_t offset, int whence);
+int cram_flush (cram_fd* fd);
+int cram_eof (cram_fd* fd);
+int cram_set_option (cram_fd* fd, cram_option opt, ...);
+int cram_set_voption (cram_fd* fd, cram_option opt, va_list args);
+int cram_set_header (cram_fd* fd, SAM_hdr* hdr);
+int cram_put_bam_seq (cram_fd* fd, bam_seq_t* b);
+cram_block* cram_encode_compression_header (cram_fd* fd, cram_container* c, cram_block_compression_hdr* h);
+cram_block* cram_encode_slice_header (cram_fd* fd, cram_slice* s);
+int cram_encode_container (cram_fd* fd, cram_container* c);
+cram_record* cram_get_seq (cram_fd* fd);
+int cram_get_bam_seq (cram_fd* fd, bam_seq_t** bam);
+cram_block_compression_hdr* cram_decode_compression_header (cram_fd* fd, cram_block* b);
+cram_block_slice_hdr* cram_decode_slice_header (cram_fd* fd, cram_block* b);
+int cram_decode_slice (cram_fd* fd, cram_container* c, cram_slice* s, SAM_hdr* hdr);
+int cram_to_bam (SAM_hdr* bfd, cram_fd* fd, cram_slice* s, cram_record* cr, int rec, bam_seq_t** bam);
+cram_stats* cram_stats_create ();
+void cram_stats_add (cram_stats* st, int val);
+void cram_stats_del (cram_stats* st, int val);
+void cram_stats_dump (cram_stats* st);
+void cram_stats_free (cram_stats* st);
+cram_encoding cram_stats_encoding (cram_fd* fd, cram_stats* st);
+char* cram_encoding2str (cram_encoding t);
+cram_codec* cram_decoder_init (cram_encoding codec, char* data, int size, cram_external_type option, int version_);
+cram_codec* cram_encoder_init (cram_encoding codec, cram_stats* st, cram_external_type option, void* dat, int version_);
+int cram_codec_to_id (cram_codec* c, int* id2);
+int cram_index_load (cram_fd* fd, const(char)* fn);
+void cram_index_free (cram_fd* fd);
+cram_index* cram_index_query (cram_fd* fd, int refid, int pos, cram_index* frm);
+void cram_index_free (cram_fd* fd);
+int cram_seek_to_refpos (cram_fd* fd, cram_range* r);
+int cram_index_build (cram_fd* fd, const(char)* fn_base);
diff --git a/cram/reader.d b/cram/reader.d
new file mode 100644
index 0000000..f3a3583
--- /dev/null
+++ b/cram/reader.d
@@ -0,0 +1,122 @@
+module cram.reader;
+
+// uses some internal functions of htslib => static linking is necessary
+
+import cram.htslib;
+import cram.reference;
+import cram.exception;
+import cram.wrappers;
+import cram.slicereader;
+
+import bio.bam.abstractreader, bio.bam.referenceinfo,
+ bio.sam.header, bio.bam.reference, bio.bam.read;
+import std.string, std.array, std.range, std.algorithm, std.conv, std.typecons;
+import std.parallelism;
+
+class CramReader : IBamSamReader {
+ private {
+ string _fn;
+ string _mode;
+ CramFd _fd;
+ TaskPool _task_pool;
+
+ SamHeader _header; // (RE-)parsed lazily
+
+ SamHeader parseHeader() {
+ auto ptr = sam_hdr_str(_fd.header);
+ auto len = sam_hdr_length(_fd.header);
+ // FIXME: avoid reparsing header; turn it into an interface
+ // with two implementations?
+ return new SamHeader(cast(string)(ptr[0 .. len]));
+ }
+
+ ReferenceSequenceInfo[] _reference_sequences;
+ int[string] _reference_sequence_dict;
+ }
+
+ this(string filename, TaskPool pool=taskPool) {
+ _fn = filename;
+ _task_pool = pool;
+
+ _fd = openCram(filename);
+ _reference_sequences.length = _fd.header.nref;
+ foreach (k; 0 .. _fd.header.nref) {
+ auto seq = _fd.header.ref_[k];
+ _reference_sequences[k] = ReferenceSequenceInfo(seq.name.to!string,
+ seq.len);
+ _reference_sequence_dict[_reference_sequences[k].name] = cast(int)k;
+ }
+ }
+
+ ///
+ bool hasReference(string reference) {
+ return null != (reference in _reference_sequence_dict);
+ }
+
+ ///
+ string filename() @property const {
+ return _fn;
+ }
+
+ ///
+ cram.reference.ReferenceSequence opIndex(string ref_name) {
+ enforce(hasReference(ref_name), "Reference with name " ~ ref_name ~ " is not present in the header");
+ auto ref_id = _reference_sequence_dict[ref_name];
+ return reference(ref_id);
+ }
+
+ ///
+ cram.reference.ReferenceSequence reference(int ref_id) {
+ enforce(ref_id < _reference_sequences.length, "Invalid reference index");
+ return cram.reference.ReferenceSequence(this, fd(), _seq_op, ref_id,
+ _reference_sequences[ref_id],
+ _task_pool);
+ }
+
+ BamRead[] unmappedReads() {
+ throw new Exception("* region unimplemented for CRAM files");
+ return [];
+ }
+
+ SamHeader header() @property {
+ if (_header is null)
+ _header = parseHeader();
+ return _header;
+ }
+
+ const(ReferenceSequenceInfo)[] reference_sequences() @property const nothrow {
+ return _reference_sequences;
+ }
+
+ private bool _seq_op;
+ void assumeSequentialProcessing() {
+ _seq_op = true;
+ }
+
+ private CramFd fd() {
+ return _fn == "-" ? _fd : openCram(_fn);
+ }
+
+ auto reads() {
+ alias R = CramFilterResult;
+ auto s = fd().slices(c => c.length > 0 ? R.pass : R.skip,
+ null,
+ _task_pool);
+ // no trust for delegates implementation => use zip-repeat trick
+ auto reads = s.zip(repeat(this), repeat(bamReadAlloc(_seq_op)))
+ .map!(x => bamReads(x[0], x[1], x[2]))
+ .joiner2;
+ return reads;
+ }
+
+ std.range.InputRange!(bio.bam.read.BamRead) allReads() @property {
+ return inputRangeObject(reads());
+ }
+
+ void createIndex(string fn_prefix=null) {
+ int ret = cram_index_build(_fd, toStringz(fn_prefix is null ? _fn : fn_prefix));
+ if (ret != 0) {
+ throw new Exception("failed to build index for CRAM file " ~ _fn);
+ }
+ }
+}
diff --git a/cram/reference.d b/cram/reference.d
new file mode 100644
index 0000000..82625a1
--- /dev/null
+++ b/cram/reference.d
@@ -0,0 +1,111 @@
+module cram.reference;
+
+import cram.exception, cram.wrappers, cram.slicereader;
+import cram.htslib;
+
+import bio.bam.abstractreader;
+import bio.bam.referenceinfo;
+import bio.bam.read;
+import std.string;
+import std.parallelism;
+import std.range, std.algorithm;
+
+int ref_seq_id(BamRead r) { return r.ref_id; }
+int ref_seq_start(BamRead r) { return r.position + 1; }
+int ref_seq_span(BamRead r) { return r.basesCovered(); }
+
+struct PositionChecker {
+ cram_range range;
+
+ private CramFilterResult passImpl(T)(T x) {
+ if (x.ref_seq_id < range.refid) return CramFilterResult.skip;
+ if (x.ref_seq_id > range.refid) return CramFilterResult.stop;
+ if (x.ref_seq_start > range.end) return CramFilterResult.stop;
+
+ // order of checks matters: ref_seq_span is relatively slow for reads
+ if (x.ref_seq_start + x.ref_seq_span - 1 < range.start)
+ return CramFilterResult.skip;
+
+ return CramFilterResult.pass;
+ }
+
+ auto pass(cram_container* c) {
+ if (c.length == 0) return CramFilterResult.skip;
+ return passImpl(c);
+ }
+
+ auto pass(cram_slice* s) { return passImpl(s.hdr); }
+ auto pass(BamRead r) { return passImpl(r); }
+}
+
+struct ReferenceSequence {
+ /// Name
+ string name() @property const {
+ return _info.name;
+ }
+
+ /// Length in base pairs
+ int length() @property const {
+ return _info.length;
+ }
+
+ /// Reference ID
+ int id() @property const {
+ return _ref_id;
+ }
+
+ private TaskPool _task_pool;
+
+ this(IBamSamReader reader, CramFd fd, bool seq_op,
+ int ref_id, ReferenceSequenceInfo info,
+ TaskPool task_pool)
+ {
+ _reader = reader;
+ _fd = fd;
+ _seq_op = seq_op;
+ _ref_id = ref_id;
+ _info = info;
+ _task_pool = task_pool;
+ }
+
+ /// Get alignments overlapping [start, end) region.
+ /// $(BR)
+ /// Coordinates are 0-based.
+ auto opSlice(uint start, uint end) {
+ enforce(start < end, "start must be less than end");
+ enforce(_ref_id >= 0, "invalid reference id");
+ enforce(cram_index_load(_fd, toStringz(_reader.filename)) == 0,
+ "couldn't load CRAM index");
+
+ cram_range r;
+ r.refid = _ref_id;
+ r.start = start + 1;
+ r.end = end;
+ if (cram_seek_to_refpos(_fd, &r) == -1)
+ throw new CramException("Failure in cram_seek_to_refpos");
+ auto checker = PositionChecker(r);
+ auto alloc = bamReadAlloc(_seq_op);
+
+ return _fd.slices(c => checker.pass(c), s => checker.pass(s),
+ _task_pool)
+ .zip(repeat(checker), repeat(_reader), repeat(alloc))
+ .map!(x => bamReads(x[0], x[2], x[3])
+ .zip(repeat(x[1]))
+ .filter!(y => y[1].pass(y[0]) == CramFilterResult.pass)
+ .map!(y => y[0]))
+ .joiner2;
+ }
+
+ /// All alignments
+ auto opSlice() {
+ assert(length > 0);
+ return opSlice(0, length);
+ }
+
+ private:
+ IBamSamReader _reader;
+ CramFd _fd;
+ int _ref_id;
+ bool _seq_op;
+ ReferenceSequenceInfo _info;
+}
diff --git a/cram/slicereader.d b/cram/slicereader.d
new file mode 100644
index 0000000..c7e548f
--- /dev/null
+++ b/cram/slicereader.d
@@ -0,0 +1,113 @@
+module cram.slicereader;
+
+import cram.htslib, cram.wrappers, cram.exception;
+import bio.bam.abstractreader, bio.bam.read;
+
+alias AllocateFunc = ubyte[] function(size_t);
+
+ubyte[] reusableChunkAllocator(size_t size) {
+ static ubyte[] _block;
+ if (size > _block.length) {
+ _block.assumeSafeAppend();
+ _block.length = size;
+ }
+ return _block[0 .. size];
+}
+
+ubyte[] chunkAllocator(size_t size) {
+ static ubyte[] _block;
+ static size_t _capa = 65536;
+ static size_t _used;
+
+ if (size + _used <= _capa && _block !is null) {
+ auto result = _block[_used .. $][0 .. size];
+ _used += size;
+ return result;
+ } else {
+ if (size > _capa)
+ _capa = size;
+ _block = uninitializedArray!(ubyte[])(_capa);
+ _used = size;
+ return _block[0 .. size];
+ }
+}
+
+AllocateFunc bamReadAlloc(bool buffer_is_safe_to_reuse) {
+ if (buffer_is_safe_to_reuse)
+ return &reusableChunkAllocator;
+ else
+ return &chunkAllocator;
+}
+
+struct CramSliceReader {
+ private {
+ CramSlice _slice;
+ int _n_curr;
+ size_t _n_total;
+ alias RcBamSeq = RcPtr!(bam_seq_t, bam_destroy1);
+ RcBamSeq _bam_seq_ptr;
+ IBamSamReader _reader;
+ AllocateFunc _alloc;
+ }
+
+ BamRead front;
+ bool empty;
+
+ this(CramSlice slice, IBamSamReader reader, AllocateFunc alloc) {
+ _bam_seq_ptr = RcBamSeq(bam_init1());
+ _slice = slice;
+ _reader = reader;
+ _alloc = alloc;
+ _n_total = slice.hdr.num_records;
+ popFront();
+ }
+
+ void popFront() {
+ if (_n_curr == _n_total) {
+ empty = true;
+ return;
+ }
+
+ int ret = cram_to_bam(_slice.fd.header,
+ _slice.fd.data.ptr,
+ _slice.data.ptr,
+ &_slice.crecs[_n_curr],
+ _n_curr,
+ &_bam_seq_ptr.data.ptr);
+ if (ret == -1)
+ throw new CramException("Failure in cram_to_bam");
+
+ front = toBamRead(_bam_seq_ptr);
+ front.associateWithReader(_reader);
+
+ ++_n_curr;
+ }
+
+ private BamRead toBamRead(bam_seq_t* record) {
+ auto chunk = _alloc(32 + record.l_data);
+ chunk[32 .. $] = record.data[0 .. record.l_data];
+ auto ptr = cast(void*)(chunk.ptr);
+ *(cast(int*)ptr + 0) = record.core.tid;
+ *(cast(int*)ptr + 1) = record.core.pos;
+
+ auto bin = record.core.bin;
+ auto mq = record.core.qual;
+ auto nl = record.core.l_qname;
+ *(cast(uint*)ptr + 2) = (bin << 16) | (mq << 8) | nl;
+ auto flag = record.core.flag;
+ auto nc = record.core.n_cigar;
+ *(cast(uint*)ptr + 3) = (flag << 16) | nc;
+
+ *(cast(int*)ptr + 4) = record.core.l_qseq;
+ *(cast(int*)ptr + 5) = record.core.mtid;
+ *(cast(int*)ptr + 6) = record.core.mpos;
+ *(cast(int*)ptr + 7) = record.core.isize;
+ return BamRead(chunk);
+ }
+}
+
+auto bamReads(CramSlice slice, IBamSamReader reader=null,
+ AllocateFunc alloc=&chunkAllocator)
+{
+ return CramSliceReader(slice, reader, alloc);
+}
diff --git a/cram/wrappers.d b/cram/wrappers.d
new file mode 100644
index 0000000..56b892c
--- /dev/null
+++ b/cram/wrappers.d
@@ -0,0 +1,420 @@
+module cram.wrappers;
+
+import cram.htslib, cram.exception;
+
+import std.typecons, std.parallelism, std.range;
+debug import std.stdio;
+
+auto zeroChecked(alias func, T...)(string err_msg, auto ref T params) {
+ int ret = func(params);
+ if (!ret)
+ throw new CramException(err_msg);
+}
+
+struct RcPtr(T, alias Free) {
+ static struct Payload {
+ debug {
+ static size_t payload_counter;
+ size_t payload_id;
+ }
+
+ T* ptr;
+ this(T* ptr) {
+ this.ptr = ptr;
+ debug {
+ payload_id = ++payload_counter;
+ stderr.writeln("Init ", T.stringof, "* #", payload_id);
+ }
+ }
+
+ ~this() {
+ debug {
+ stderr.writeln("Free ", T.stringof, "* #", payload_id);
+ }
+ Free(ptr);
+ }
+
+ alias ptr this;
+
+ this(this) { assert(false); }
+ void opAssign(Payload rhs) { assert(false); }
+ }
+
+ alias Data = RefCounted!(Payload, RefCountedAutoInitialize.no);
+ Data data;
+ alias data this;
+
+ bool isNull() @property const {
+ return !data.refCountedStore.isInitialized || data.ptr is null;
+ }
+
+ this(this)
+ {
+ static if (is(T == cram_slice)) {
+ debug writeln("COPIED #", data.ptr.id + 1);
+ }
+ }
+
+ this(T* ptr) { data = Data(ptr); }
+}
+
+auto nullChecked(alias func, T...)(string err_msg, cram_fd* fd,
+ auto ref T other_params)
+{
+ auto ptr = func(fd, other_params);
+ if (ptr !is null)
+ return ptr;
+ if (fd.err == 0)
+ return null;
+ throw new CramException(err_msg);
+}
+
+// instances of these types must be used within the same thread!
+void my_cram_close(cram_fd* fd) {
+ import core.sys.posix.pthread;
+ pthread_mutex_destroy(&fd.metrics_lock);
+ pthread_mutex_destroy(&fd.ref_lock);
+ pthread_mutex_destroy(&fd.bam_list_lock);
+ cram_close(fd);
+}
+
+alias RcCramFd = RcPtr!(cram_fd, my_cram_close);
+alias CramFd = RcCramFd;
+
+CramFd openCram(string filename) {
+ import std.string : toStringz;
+ auto fd = cram_open(toStringz(filename), "rb");
+
+ if (fd == null)
+ throw new CramException("Can't open file " ~ filename);
+
+ cram_set_option(fd, cram_option.CRAM_OPT_DECODE_MD);
+
+ // initialize locks, but we will use the pool from D standard library
+ // instead of the htslib implementation
+ import core.sys.posix.pthread;
+ pthread_mutex_init(&fd.metrics_lock, null);
+ pthread_mutex_init(&fd.ref_lock, null);
+ pthread_mutex_init(&fd.bam_list_lock, null);
+ fd.shared_ref = 1;
+ fd.own_pool = 0;
+ fd.pool = null;
+
+ return CramFd(fd);
+}
+
+enum CramFilterResult {
+ skip, // skip over the object
+ pass, // the filter doesn't reject the object
+ stop // skip, and further iteration won't give any results
+}
+
+alias RcCramContainer = RcPtr!(cram_container, cram_free_container);
+alias CramContainer = RcCramContainer;
+alias CramContainerFilter = CramFilterResult delegate(cram_container*);
+
+alias RcCramSlice = RcPtr!(cram_slice, cram_free_slice);
+alias UndecodedSliceFilter = CramFilterResult delegate(cram_slice*);
+
+struct CramSlice {
+ CramFd fd;
+ RcCramContainer container;
+ RcCramSlice slice;
+
+ alias slice this;
+
+ bool is_decoded() @property const {
+ return slice.crecs !is null;
+ }
+}
+
+struct CramContainerRange {
+ CramContainer front;
+ bool empty;
+
+ private CramFd _fd;
+ private CramContainerFilter _filter;
+
+ // the containers that doesn't pass the filter
+ // will be simply skipped without any decoding
+ this(CramFd fd, CramContainerFilter f)
+ {
+ _fd = fd;
+ _filter = f;
+ popFront();
+ }
+
+ void popFront() {
+ if (!front.isNull) {
+ // skip remaining blocks of previous container
+ while (front.curr_slice != front.max_slice) {
+ ++front.curr_slice;
+ auto next_slice = cram_read_slice(_fd);
+ if (!next_slice)
+ throw new CramException("Failure in cram_read_slice");
+ cram_free_slice(next_slice);
+ }
+ }
+
+ auto err_msg = "Failed to read container header";
+ while (true) {
+ // read container header
+ debug writeln("cram_read_container");
+ auto ptr = nullChecked!cram_read_container(err_msg, _fd);
+ if (ptr is null) {
+ empty = true;
+ break;
+ }
+ front = CramContainer(ptr);
+ // apply the filter
+ if (_filter is null) break;
+ auto res = _filter(front);
+
+ if (res == CramFilterResult.stop) {
+ empty = true;
+ break;
+ }
+
+ if (res == CramFilterResult.pass) {
+ break;
+ }
+
+ if (-1 == cram_seek(_fd, front.length, 1))
+ throw new CramException("Failed to seek in CRAM file");
+ }
+
+ if (empty) return;
+
+ // read compression header block
+ err_msg = "Failed to read compression header block";
+ front.comp_hdr_block = nullChecked!cram_read_block(err_msg, _fd);
+ auto content_type = front.comp_hdr_block.content_type;
+ if (content_type != cram_content_type.COMPRESSION_HEADER)
+ throw new CramException(err_msg);
+
+ err_msg = "Failed to decode compression header";
+ front.comp_hdr = cram_decode_compression_header(_fd,
+ front.comp_hdr_block);
+ if (front.comp_hdr is null)
+ throw new CramException(err_msg);
+
+ if (!(front.comp_hdr.AP_delta)) {
+ // FIXME: in cram_decode.c, there's a mutex locked around this line,
+ // but it looks unnecessary
+ _fd.unsorted = 1;
+ }
+ }
+}
+
+auto containers(CramFd fd, CramContainerFilter f) {
+ return CramContainerRange(fd, f);
+}
+
+class UndecodedSliceRange {
+ private {
+ CramFd _fd;
+ ref CramContainer _container() @property {
+ assert(!_containers.empty);
+ return _containers.front;
+ }
+ CramContainerRange _containers;
+ UndecodedSliceFilter _sf;
+ }
+
+ this(CramFd fd, CramContainerFilter cf, UndecodedSliceFilter sf) {
+ _fd = fd;
+ _sf = sf;
+ _containers = containers(_fd, cf);
+
+ if (_containers.empty)
+ empty = true;
+ popFront();
+ }
+
+ CramSlice front;
+ bool empty;
+
+ // true == either front or empty is set
+ private bool readNextSliceFromCurrentContainer() {
+ assert(_container.curr_slice < _container.max_slice);
+ _container.curr_slice++;
+
+ auto err_msg = "Failure in cram_read_slice";
+ debug stderr.writeln("cram_read_slice (", _container.curr_slice,
+ "/", _container.max_slice, ")");
+ auto ptr = cram_read_slice(_fd);
+ if (ptr is null) {
+ throw new CramException(err_msg);
+ }
+ assert(ptr.hdr !is null);
+ ptr.last_apos = ptr.hdr.ref_seq_start;
+
+ if (_sf is null) { setupFront(ptr); return true; }
+ auto ret = _sf(ptr);
+ if (ret == CramFilterResult.pass) { setupFront(ptr); return true; }
+ if (ret == CramFilterResult.stop) { empty = true; return true; }
+ return false;
+ }
+
+ private void setupFront(cram_slice* ptr) {
+ front = CramSlice(_fd, _container, RcCramSlice(ptr));
+ }
+
+ void popFront() {
+ while (!empty) {
+ while (_container.curr_slice < _container.max_slice)
+ if (readNextSliceFromCurrentContainer())
+ return;
+
+ // no slice (satisfying the filter) in the current container
+ _containers.popFront();
+ if (_containers.empty) { empty = true; return; }
+ }
+ }
+}
+
+auto undecodedSlices(CramFd fd, CramContainerFilter cf,
+ UndecodedSliceFilter sf=null)
+{
+ return new UndecodedSliceRange(fd, cf, sf);
+}
+
+void decodeSlice(cram_fd* fd, cram_container* c, cram_slice* s) {
+ auto err_msg = "Failure in cram_decode_slice";
+ debug writeln("DECODING slice #", s.id + 1);
+ int ret = cram_decode_slice(fd, c, s, fd.header);
+ if (ret != 0)
+ throw new CramException(err_msg);
+}
+
+void decodeSlice(CramSlice slice) {
+ decodeSlice(slice.fd, slice.container, slice.data.ptr);
+}
+
+import bio.core.utils.roundbuf;
+
+struct CramSliceDecoder(R)
+ if (isInputRange!R && is(ElementType!R == CramSlice))
+{
+ private {
+ R _slices;
+ TaskPool _pool;
+
+ // FIXME: D arrays don't call element destructors when GC-d :(
+ RoundBuf!CramSlice _input_queue;
+ alias DecodeTask = Task!(decodeSlice,
+ cram_fd*, cram_container*, cram_slice*)*;
+ RoundBuf!DecodeTask _output_queue;
+
+ void putNextSliceIntoQueue() {
+ auto slice = _slices.front;
+ _input_queue.put(slice);
+ _slices.popFront();
+
+ // don't copy it between threads (ref. counting is not atomic)
+ cram_fd* fd = slice.fd;
+ cram_container* c = slice.container;
+ cram_slice* s = slice;
+ debug writeln("PUT slice #", s.id + 1, " into queue");
+ version (serial) {
+ decodeSlice(fd, c, s);
+ } else {
+ auto t = task!decodeSlice(fd, c, s);
+ _pool.put(t);
+ _output_queue.put(t);
+ }
+ }
+ }
+
+ this(R slices, TaskPool pool) {
+ _slices = slices;
+ _pool = pool;
+ import std.algorithm : max;
+ auto size = max(1, pool.size) * 2;
+ _input_queue = RoundBuf!CramSlice(size);
+ _output_queue = RoundBuf!DecodeTask(size);
+ while (!_slices.empty && !_input_queue.full)
+ putNextSliceIntoQueue();
+
+ popFront();
+ }
+
+ CramSlice front;
+ bool empty;
+
+ void popFront() {
+ if (_input_queue.empty) {
+ empty = true;
+ return;
+ }
+
+ version (serial) {} else {
+ auto t = _output_queue.front;
+ _output_queue.popFront();
+ t.yieldForce(); // now _input_queue.front is decoded
+ }
+
+ front = _input_queue.front;
+ _input_queue.popFront();
+ debug writeln("GET slice #", front.id + 1, " from queue");
+ if (!_slices.empty)
+ putNextSliceIntoQueue();
+ }
+}
+
+auto decode(R)(R slices, std.parallelism.TaskPool pool)
+ if(isInputRange!R && is(ElementType!R == CramSlice))
+{
+ return CramSliceDecoder!R(slices, pool);
+}
+
+auto slices(CramFd fd, CramContainerFilter cf, UndecodedSliceFilter sf,
+ TaskPool pool)
+{
+ auto undecoded_slices = new UndecodedSliceRange(fd, cf, sf);
+ return undecoded_slices.decode(pool);
+}
+
+// workaround for LDC #795 - doesn't use short-circuit evaluation
+// TODO remove when 0.15.0 release comes out
+auto joiner2(RoR)(RoR r)
+if (isInputRange!RoR && isInputRange!(ElementType!RoR)) {
+ static struct Result {
+ private:
+ RoR _items;
+ ElementType!RoR _current;
+ public:
+ this(RoR r) {
+ _items = r;
+
+ _current = ElementType!RoR.init;
+
+ while (!_items.empty) {
+ _current = _items.front;
+ if (!_current.empty)
+ break;
+ _items.popFront();
+ }
+ }
+
+ @property auto empty() { return _items.empty; }
+ @property auto ref front() { assert(!empty); return _current.front; }
+ void popFront()
+ {
+ assert(!_current.empty);
+ _current.popFront();
+ if (_current.empty)
+ {
+ assert(!_items.empty);
+ _items.popFront();
+ while (!_items.empty) {
+ _current = _items.front;
+ if (!_current.empty)
+ break;
+ _items.popFront();
+ }
+ }
+ }
+ }
+ return Result(r);
+}
diff --git a/cram/writer.d b/cram/writer.d
new file mode 100644
index 0000000..0b7583d
--- /dev/null
+++ b/cram/writer.d
@@ -0,0 +1,108 @@
+module cram.writer;
+
+import std.stream;
+import std.string;
+
+import cram.htslib;
+import cram.exception;
+
+import bio.bam.read;
+import bio.bam.referenceinfo;
+import bio.sam.header;
+
+extern(C) {
+ int fai_build(const(char)* fn);
+}
+
+string fastaIndexFilename(string fasta_fn) {
+ import std.file : exists, isFile;
+ auto fn = fasta_fn ~ ".fai";
+ if (fn.exists && fn.isFile)
+ return fn;
+ if (fai_build(toStringz(fasta_fn)) < 0)
+ throw new Exception("Failed to build fasta index for " ~ fasta_fn);
+ return fn;
+}
+
+final class CramWriter {
+ private {
+ cram_fd* _fd;
+ string _fn;
+ size_t _n_threads;
+
+ string _reference_fn;
+ string _fasta_idx_fn;
+ }
+
+ this(string filename, size_t n_threads) {
+ _fn = filename;
+ _n_threads = n_threads;
+
+ _fd = cram_open(toStringz(filename), "wb");
+ if (_fd is null)
+ throw new CramException("Can't open file for writing: " ~ filename);
+
+ if (_n_threads > 1)
+ cram_set_option(_fd, cram_option.CRAM_OPT_NTHREADS, _n_threads);
+ }
+
+ void setFastaFilename(string ref_fn) {
+ _reference_fn = ref_fn ~ "\0";
+ _fasta_idx_fn = fastaIndexFilename(ref_fn);
+ }
+
+ void writeSamHeader(SamHeader header) {
+ writeSamHeader(header.text);
+ }
+
+ void writeSamHeader(string header_text) {
+ auto hdr = sam_hdr_parse_(header_text.ptr, cast(int)header_text.length);
+ if (cram_set_header(_fd, hdr) < 0)
+ throw new CramException("Failed to set SAM header");
+ if (_reference_fn !is null)
+ cram_load_reference(_fd, _reference_fn.ptr);
+ if (cram_write_SAM_hdr(_fd, _fd.header) < 0)
+ throw new CramException("Failed to write SAM header");
+ }
+
+ private void convertToBamSeq(R)(ref R read, bam_seq_t* bam_seq) {
+ with (bam_seq.core) {
+ tid = read.ref_id;
+ pos = read.position;
+ bin = cast(ushort)read.bin.id;
+ qual = read.mapping_quality;
+ l_qname = cast(ubyte)(read.name.length + 1);
+ flag = read.flag;
+ n_cigar = cast(ushort)read.cigar.length;
+ l_qseq = cast(int)read.sequence.length;
+ mtid = read.mate_ref_id;
+ mpos = read.mate_position;
+ isize = read.template_length;
+ }
+ bam_seq.l_data = bam_seq.m_data = cast(int)(read.raw_data.length - 32);
+ bam_seq.data = read.raw_data.ptr + 32;
+ }
+
+ void writeRecord(R)(auto ref R read) if(isBamRead!R) {
+ // somewhat messy code because of the decision
+ // to use ending zero byte of qname for flags
+ auto offset = 32 + read.name.length;
+ ubyte old_byte = read.raw_data[offset];
+ read.raw_data[offset] = 0;
+ scope(exit) read.raw_data[offset] = old_byte;
+
+ bam_seq_t bam_seq;
+ convertToBamSeq(read, &bam_seq);
+ cram_put_bam_seq(_fd, &bam_seq);
+ }
+
+ void flush() {
+ if (cram_flush(_fd) == -1)
+ throw new CramException("Failed to flush block (" ~ _fn ~ ")");
+ }
+
+ void finish() {
+ if (cram_close(_fd) == -1)
+ throw new CramException("Failed to close CRAM file: " ~ _fn);
+ }
+}
diff --git a/deb/DEBIAN_CHANGELOG b/deb/DEBIAN_CHANGELOG
new file mode 100644
index 0000000..0ab4503
--- /dev/null
+++ b/deb/DEBIAN_CHANGELOG
@@ -0,0 +1,139 @@
+sambamba (0.4.7) unstable, urgency=low
+ * use random subdirectories for temporary files in both sort and markdup utilities
+ (allows to run multiple processes in parallel)
+ * fixed bug in slice tool: when slicing last reference, unmapped reads were written too
+ * fixed a bug in uncompressed BAM output
+ * fixed a bug in intersecting with BED
+
+ -- Artem Tarasov <lomereiter at gmail.com> Fri, 20 Jun 2014 16:27:19 +0400
+
+sambamba (0.4.6) unstable, urgency=low
+ * fixed a bug in duplicate marking tool
+ * fixed handling empty BAM files in sort tool
+
+ -- Artem Tarasov <lomereiter at gmail.com> Mon, 28 Apr 2014 23:47:20 +0400
+
+sambamba (0.4.5) unstable, urgency=low
+
+ * new -L option in the 'view' tool for intersecting a file with BED
+ * preventing incidental file overwrites by checking output filename
+ * slightly improved performance of converting to SAM/JSON
+
+ -- Artem Tarasov <lomereiter at gmail.com> Tue, 04 Feb 2014 10:57:21 +0400
+
+sambamba (0.4.4) unstable, urgency=low
+
+ * fixed sorting by name which didn't work in recent releases
+
+ -- Artem Tarasov <lomereiter at gmail.com> Wed, 18 Dec 2013 20:38:39 +0400
+
+sambamba (0.4.3) unstable, urgency=low
+
+ * improved sorting performance
+ * bug fixed in the 'sort' tool
+ * 'view' supports '*' region, '--unmapped' option removed
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sun, 01 Dec 2013 17:11:42 +0400
+
+sambamba (0.4.2) unstable; urgency=low
+
+ * new option '--unmapped' in view tool (for indexed BAMs)
+ * fixed an epic bug in region queries introduced in 0.4.1
+
+ -- Artem Tarasov <lomereiter at gmail.com> Thu, 14 Nov 2013 02:45:58 +0400
+
+sambamba (0.4.1) unstable, urgency=low
+
+ * integrated new BAM reader (better scaling on multicore)
+ * `index` tool now collects optional statistics (for idxstats)
+ * fixed a bug with outputting SAM when requested JSON
+
+ -- Artem Tarasov <lomereiter at gmail.com> Wed, 30 Oct 2013 00:42:33 +0400
+
+sambamba (0.4.0) unstable; urgency=low
+
+ * added tool for marking duplicates, which uses Picard criteria
+
+ -- Artem Tarasov <lomereiter at gmail.com> Wed, 02 Oct 2013 23:07:14 +0400
+
+sambamba (0.3.3) unstable; urgency=low
+
+ * reduced buffer size for uncompressed BAM output
+ so that it is less than pipe buffer size
+ * added subsampling option to sambamba view
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sat, 13 Jul 2013 16:27:25 +0400
+
+sambamba (0.3.2) unstable; urgency=low
+
+ * fixed bug in flagstat parameter parsing
+ * consistent naming for number of threads in CLI
+
+ -- Artem Tarasov <lomereiter at gmail.com> Tue, 16 Apr 2013 09:23:35 +0400
+
+sambamba (0.3.1) unstable; urgency=low
+
+ * numerous bugfixes
+ * now requires at least v2.061 of D compiler
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sun, 11 Mar 2013 01:03:17 +0400
+
+sambamba (0.3.0) unstable; urgency=low
+
+ * new command line tool -- sambamba-slice
+ * several minor bugfixes
+ * compiles with LDC2
+
+ -- Artem Tarasov <lomereiter at gmail.com> Wed, 12 Dec 2012 22:57:12 +0400
+
+sambamba (0.2.9) unstable; urgency=low
+
+ * random access speedup
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sun, 08 Oct 2012 01:39:26 +0400
+
+sambamba (0.2.8) unstable; urgency=low
+
+ * fix segfault on opening unexistent file
+ * fix random-access for files >2GB
+
+ -- Artem Tarasov <lomereiter at gmail.com> Wed, 26 Sep 2012 17:17:03 +0400
+
+sambamba (0.2.7) unstable; urgency=low
+
+ * fix a stupid bug related to determining end of file
+ * add support for BAM files of size > 2GB (workaround for Phobos bug)
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sun, 16 Sep 2012 14:45:09 +0400
+
+sambamba (0.2.6) unstable; urgency=low
+
+ * add output in MessagePack format to sambamba-view
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sun, 19 Aug 2012 19:42:48 +0400
+
+sambamba (0.2.5) unstable; urgency=low
+
+ * fix bug in indexing (worked correctly for < 73Mbp long references)
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sat, 18 Aug 2012 20:02:12 +0400
+
+sambamba (0.2.4) unstable; urgency=low
+
+ * fix bug about outputting header to a file in SAM/JSON output
+ * consistent use of stderr for error messages and usage information
+
+ -- Artem Tarasov <lomereiter at gmail.com> Tue, 14 Aug 2012 21:31:52 +0400
+
+sambamba (0.2.3) unstable; urgency=low
+
+ * fix bug in BAM output
+ * support for non-seekable streams (pipes, stdin/stdout)
+
+ -- Artem Tarasov <lomereiter at gmail.com> Sat, 11 Aug 2012 16:20:44 +0400
+
+sambamba (0.2.1) unstable; urgency=low
+
+ * Initial release
+
+ -- Artem Tarasov <lomereiter at gmail.com> Tue, 7 Aug 2012 17:51:11 +0400
diff --git a/deb/makepackage.rb b/deb/makepackage.rb
new file mode 100755
index 0000000..6f33d28
--- /dev/null
+++ b/deb/makepackage.rb
@@ -0,0 +1,181 @@
+#!/usr/bin/env ruby
+
+require 'fileutils'
+
+def print_usage
+ puts 'usage: ./makepackage.rb <i386|amd64>'
+ puts
+ puts ' makes a debian package for specified architecture'
+end
+
+if ARGV.length.zero?
+ print_usage
+ exit
+end
+
+$debdir = Dir.pwd
+
+################################################################################
+
+def get_current_tag
+ `git describe --tags \`git rev-list --tags --max-count=1\``.strip
+end
+
+def get_current_version
+ if $current_version.nil?
+ # tag is expected to be of form vX.Y.Z
+ tag = get_current_tag
+ $current_version = tag[1 .. -1]
+ end
+ $current_version
+end
+
+def generate_copyright_file
+ gpl2_notice =<<GPL
+ This program is free software; you can redistribute it
+ and/or modify it under the terms of the GNU General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later
+ version.
+ .
+ This program is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied
+ warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the GNU General Public License for more
+ details.
+ .
+ You should have received a copy of the GNU General Public
+ License along with this package; if not, write to the Free
+ Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ Boston, MA 02110-1301 USA
+ .
+ On Debian systems, the full text of the GNU General Public
+ License version 2 can be found in the file
+ `/usr/share/common-licenses/GPL-2'.
+GPL
+
+ File.open('usr/share/doc/sambamba/copyright', 'w+') do |f|
+ f.puts 'Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/'
+ f.puts 'Upstream-Name: sambamba'
+ f.puts 'Upstream-Contact: Artem Tarasov <lomereiter at gmail.com>'
+ f.puts 'Source: https://github.com/lomereiter/sambamba'
+ f.puts
+ f.puts 'Files: *'
+ f.puts 'Copyright: 2012-2014 Artem Tarasov'
+ f.puts 'License: GPL-2+'
+ f.puts gpl2_notice
+ end
+end
+
+def copy_changelog_to_usr_share_doc_sambamba
+ FileUtils.copy '../DEBIAN_CHANGELOG', 'usr/share/doc/sambamba/changelog'
+end
+
+def gzip_changelog
+ `gzip --best usr/share/doc/sambamba/changelog`
+end
+
+def make_sambamba
+ Dir.chdir '../..'
+ if $arch == 'i386' then
+ `make sambamba-ldmd2-32`
+ elsif $arch == 'amd64' then
+ `make sambamba-ldmd2-64`
+ else
+ puts 'architecture must be one of i386, amd64'
+ exit 1
+ end
+
+ Dir.chdir $debdir
+ Dir.chdir $rootdir
+end
+
+def copy_sambamba_to_usr_bin
+ FileUtils.copy '../../build/sambamba', 'usr/bin'
+end
+
+def strip_sambamba_executable
+ `strip usr/bin/sambamba`
+end
+
+def copy_manpages_to_usr_share_man_man1
+ Dir.glob('../../man/*.1').each do |fn|
+ FileUtils.copy fn, 'usr/share/man/man1'
+ end
+end
+
+def gzip_manpages
+ `gzip --best usr/share/man/man1/*.1`
+end
+
+def get_dependencies
+ # TODO: get from dpkg-shlibdeps
+ "Depends: libc6 (>= 2.3.2), libgcc1 (>= 1:4.1.1)"
+end
+
+def compute_installed_size
+ sz = `du -bs .`.to_i
+ puts "package size: #{sz}"
+ (sz / 1024.0).ceil * 1024
+end
+
+def generate_control_file
+ text = <<CONTROL
+Source: sambamba
+Package: sambamba
+Priority: optional
+Version: #{get_current_version}
+Section: science
+Architecture: #{$arch}
+#{get_dependencies}
+Installed-Size: #{compute_installed_size}
+Maintainer: Artem Tarasov <lomereiter at gmail.com>
+Description: tool for working with data in SAM/BAM file formats
+ It provides a number of utilities (including sort, merge, and index)
+ all of which use parallel compression and decompression of BAM files,
+ wisely using resources of modern multi-core machines.
+CONTROL
+
+ File.open('DEBIAN/control', 'w+') do |f|
+ f.puts text
+ end
+end
+
+def add_lintian_override_concerning_embedded_zlib
+ File.open('usr/share/lintian/overrides/sambamba', 'w+') do |f|
+ f.puts '# Phobos links with Zlib statically'
+ f.puts 'sambamba binary: embedded-zlib'
+ end
+end
+
+def build_debian_package
+ Dir.chdir '..'
+ `fakeroot dpkg-deb --build #{$rootdir}`
+end
+
+################################################################################
+
+$arch = ARGV[0]
+
+$rootdir = "sambamba-#{get_current_version}_#{$arch}"
+FileUtils.remove_entry_secure $rootdir if File.exists? $rootdir
+Dir.mkdir $rootdir
+Dir.chdir $rootdir
+Dir.mkdir 'DEBIAN'
+FileUtils.mkdir_p 'usr/bin'
+FileUtils.mkdir_p 'usr/share/doc/sambamba'
+FileUtils.mkdir_p 'usr/share/lintian/overrides'
+FileUtils.mkdir_p 'usr/share/man/man1'
+# stay in rootdir
+
+generate_copyright_file
+copy_changelog_to_usr_share_doc_sambamba
+gzip_changelog
+make_sambamba
+copy_sambamba_to_usr_bin
+strip_sambamba_executable
+copy_manpages_to_usr_share_man_man1
+gzip_manpages
+generate_control_file
+add_lintian_override_concerning_embedded_zlib
+build_debian_package
diff --git a/etc/bash_completion.d/sambamba b/etc/bash_completion.d/sambamba
new file mode 100644
index 0000000..0d0ac86
--- /dev/null
+++ b/etc/bash_completion.d/sambamba
@@ -0,0 +1,77 @@
+_sambamba()
+{
+ local cur=${COMP_WORDS[COMP_CWORD]}
+ local subcommand=${COMP_WORDS[1]}
+
+ if [[ $COMP_CWORD == 1 ]]; then
+ COMPREPLY=( $(compgen -W "view index merge sort \
+ flagstat slice markdup" -- $cur) )
+ compopt +o nospace
+ elif [[ $cur == -* ]]; then
+ case "$subcommand" in
+ view)
+ COMPREPLY=( $(compgen -W "-F -f -h -H -I -c -S -p \
+ -l -o -t -s --filter= --header \
+ --format= --with-header --count \
+ --reference-info --show-progress \
+ --sam-input --output-filename= \
+ --nthreads= --compression-level= \
+ --subsample= --subsampling-seed=" -- $cur) )
+ ;;
+ index)
+ COMPREPLY=( $(compgen -W "-p -t --nthreads= --show-progress" -- $cur) )
+ ;;
+ merge)
+ COMPREPLY=( $(compgen -W "-p -t --nthreads= -l -H --header \
+ --compression-level=" -- $cur) )
+ ;;
+ sort)
+ COMPREPLY=( $(compgen -W "-m --memory-limit= --tmpdir= -o --out \
+ -n --compression-level= -u -p -t \
+ --uncompressed-chunks --show-progress \
+ --nthreads=" -- $cur) )
+ ;;
+ flagstat)
+ COMPREPLY=( $(compgen -W "-t -p --nthreads= --show-progress" -- $cur) )
+ ;;
+ slice)
+ COMPREPLY=( $(compgen -W "-o --output-filename=" -- $cur) )
+ ;;
+ markdup)
+ COMPREPLY=( $(compgen -W "-r -t -l -p --tmpdir= --remove-duplicates \
+ --nthreads= --compression-level= \
+ --show-progress" -- $cur) )
+ ;;
+ esac
+
+ if [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != "--"*"=" ]] ; then
+ compopt +o nospace
+ fi
+
+ elif [[ ${COMP_WORDS[COMP_CWORD - 2]} == "--format" || ${COMP_WORDS[COMP_CWORD - 1]} == "-f" ]]; then
+ COMPREPLY=( $(compgen -W "sam bam json msgpack" -- $cur) )
+ compopt +o nospace
+ elif [[ $subcommand == "view" || $subcommand == "slice" ]]; then
+ for word in ${COMP_WORDS[@]}; do
+ if [[ $word == *.bam && $word != "" ]]; then
+ eval abspath=$word
+ COMPREPLY=( $(sambamba view -H -t4 $abspath | grep @SQ | \
+ cut -f 2 | cut -f2 -d: 2>/dev/null | grep "^$cur") )
+ break
+ fi
+ done
+
+ if [[ ${#COMPREPLY[@]} == 0 ]]; then
+ compopt +o nospace
+ fi
+
+ compopt -o default
+ compopt -o filenames
+ else
+ compopt +o nospace
+ compopt -o default
+ fi
+}
+
+complete -o nospace -F _sambamba sambamba
+# vim: set syntax=sh :
diff --git a/main.d b/main.d
new file mode 100644
index 0000000..8093d3c
--- /dev/null
+++ b/main.d
@@ -0,0 +1,80 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+import sambamba.view;
+import sambamba.index;
+import sambamba.merge;
+import sambamba.sort;
+import sambamba.flagstat;
+import sambamba.slice;
+import sambamba.markdup;
+import sambamba.depth;
+import sambamba.pileup;
+import sambamba.fixbins;
+
+import sambamba.utils.common.ldc_gc_workaround;
+
+import utils.strip_bcf_header;
+import utils.lz4;
+import utils.version_ : VERSION;
+
+import std.stdio;
+
+void printUsage() {
+ stderr.writeln("sambamba " ~ VERSION);
+ stderr.writeln();
+ stderr.writeln("Usage: sambamba [command] [args...]");
+ stderr.writeln();
+ stderr.writeln(" Available commands: 'view', 'index', 'merge', 'sort',");
+ stderr.writeln(" 'flagstat', 'slice', 'markdup', 'depth', 'mpileup'");
+ stderr.writeln(" To get help on a particular command, just call it without args.");
+ stderr.writeln();
+ stderr.writeln("Leave bug reports and feature requests at");
+ stderr.writeln("https://github.com/lomereiter/sambamba/issues");
+ stderr.writeln();
+}
+
+int main(string[] args) {
+ if (args.length == 1) {
+ printUsage();
+ return 1;
+ }
+
+ auto _args = args[0] ~ args[2 .. $];
+
+ switch (args[1]) {
+ case "view": return view_main(_args);
+ case "index": return index_main(_args);
+ case "merge": return merge_main(_args);
+ case "sort": return sort_main(_args);
+ case "flagstat": return flagstat_main(_args);
+ case "slice": return slice_main(_args);
+ case "markdup": return markdup_main(_args);
+ case "depth": return depth_main(_args);
+ case "mpileup": return pileup_main(_args);
+
+ // hidden commands
+ case "fixbins": return fixbins_main(_args);
+ case "strip_bcf_header": return strip_bcf_header_main(_args);
+ case "lz4compress": return lz4compress_main();
+ default:
+ printUsage();
+ return 1;
+ }
+}
diff --git a/man/.gitignore b/man/.gitignore
new file mode 100644
index 0000000..2d19fc7
--- /dev/null
+++ b/man/.gitignore
@@ -0,0 +1 @@
+*.html
diff --git a/man/sambamba-flagstat.1 b/man/sambamba-flagstat.1
new file mode 100644
index 0000000..925c256
--- /dev/null
+++ b/man/sambamba-flagstat.1
@@ -0,0 +1,59 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-FLAGSTAT" "1" "August 2014" "" ""
+.
+.SH "NAME"
+\fBsambamba\-flagstat\fR \- getting flag statistics from BAM file
+.
+.SH "SYNOPSIS"
+\fBsambamba flagstat\fR \fIOPTIONS\fR <input\.bam>
+.
+.SH "DESCRIPTION"
+Outputs some statistics drawn from read flags\.
+.
+.P
+First line contains numbers of QC\-passed and QC\-failed reads\. Then come pairs of numbers, the former for QC\-passed reads, the latter for QC\-failed ones:
+.
+.IP "\(bu" 4
+duplicates
+.
+.IP "\(bu" 4
+mapped reads (plus percentage relative to the numbers from the first line)
+.
+.IP "\(bu" 4
+reads with \'is_paired\' flag set
+.
+.IP "\(bu" 4
+paired reads which are first mates
+.
+.IP "\(bu" 4
+paired reads which are second mates
+.
+.IP "\(bu" 4
+paired reads with \'proper_pair\' flag set (plus percentage relative to the numbers of QC\-passed/failed reads with \'is_paired\' flag set)
+.
+.IP "\(bu" 4
+paired reads where both mates are mapped
+.
+.IP "\(bu" 4
+paired reads where read itself is unmapped but mate is mapped
+.
+.IP "\(bu" 4
+paired reads where mate is mapped to a different chromosome
+.
+.IP "\(bu" 4
+the same as previous but mapping quality is not less than 5
+.
+.IP "" 0
+.
+.SH "OPTIONS"
+.
+.TP
+\fB\-t\fR, \fB\-\-nthreads\fR=\fINTHREADS\fR
+Specify number of threads to use for BAM decompression
+.
+.TP
+\fB\-p\fR, \fB\-\-show\-progress\fR
+Show progressbar in STDERR
+
diff --git a/man/sambamba-flagstat.1.ronn b/man/sambamba-flagstat.1.ronn
new file mode 100644
index 0000000..12c6756
--- /dev/null
+++ b/man/sambamba-flagstat.1.ronn
@@ -0,0 +1,34 @@
+sambamba-flagstat(1) -- getting flag statistics from BAM file
+=============================================================
+
+## SYNOPSIS
+
+`sambamba flagstat` [OPTIONS] <input.bam>
+
+## DESCRIPTION
+
+Outputs some statistics drawn from read flags.
+
+First line contains numbers of QC-passed and QC-failed reads.
+Then come pairs of numbers, the former for QC-passed reads, the latter for
+QC-failed ones:
+
+* duplicates
+* mapped reads (plus percentage relative to the numbers from the first line)
+* reads with 'is_paired' flag set
+* paired reads which are first mates
+* paired reads which are second mates
+* paired reads with 'proper_pair' flag set (plus percentage relative to
+ the numbers of QC-passed/failed reads with 'is_paired' flag set)
+* paired reads where both mates are mapped
+* paired reads where read itself is unmapped but mate is mapped
+* paired reads where mate is mapped to a different chromosome
+* the same as previous but mapping quality is not less than 5
+
+## OPTIONS
+
+ * `-t`, `--nthreads`=<NTHREADS>:
+ Specify number of threads to use for BAM decompression
+
+ * `-p`, `--show-progress`:
+ Show progressbar in STDERR
diff --git a/man/sambamba-index.1 b/man/sambamba-index.1
new file mode 100644
index 0000000..9918c9a
--- /dev/null
+++ b/man/sambamba-index.1
@@ -0,0 +1,53 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-INDEX" "1" "February 2015" "" ""
+.
+.SH "NAME"
+\fBsambamba\-index\fR \- tool for building standard index files for BAM data
+.
+.SH "SYNOPSIS"
+\fBsambamba index\fR [\fB\-p\fR|\fB\-\-show\-progress\fR] [\fB\-n\fR|\fB\-\-threads\fR=NTHREADS] <input\.bam> [<output\.bai>]
+.
+.SH "DESCRIPTION"
+\fBsambamba index\fR builds an index for a sorted by coordinate BAM file\. This step is required for effective region querying in most tools for working with BAM data\.
+.
+.P
+An index is by default written to the file with the same filename except \fB\.bai\fR extension added to the end\. The user can, however, override this default by providing desired output filename explicitly as an optional command\-line argument\.
+.
+.SH "OPTIONS"
+.
+.TP
+\fB\-p\fR, \fB\-\-show\-progress\fR
+Show a wget\-like progressbar in STDERR\.
+.
+.TP
+\fB\-t\fR, \fB\-\-nthreads\fR=\fINTHREADS\fR
+Number of threads to use\.
+.
+.SH "EXAMPLES"
+Build index file example\.bam\.bai given a sorted BAM file example\.bam:
+.
+.IP "" 4
+.
+.nf
+
+$ sambamba index example\.bam
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Build index file at custom location showing progress:
+.
+.IP "" 4
+.
+.nf
+
+$ sambamba index \-\-show\-progress example\.bam /tmp/example\.bam\.bai
+.
+.fi
+.
+.IP "" 0
+For more information on the original samtools INDEX behaviour, check out the [samtools documentation](http://samtools\.sourceforge\.net/samtools\.shtml
diff --git a/man/sambamba-index.1.ronn b/man/sambamba-index.1.ronn
new file mode 100644
index 0000000..625d09b
--- /dev/null
+++ b/man/sambamba-index.1.ronn
@@ -0,0 +1,41 @@
+sambamba-index(1) -- tool for building standard index files for BAM data
+========================================================================
+
+## SYNOPSIS
+
+`sambamba index` [`-p`|`--show-progress`] [`-n`|`--threads`=NTHREADS] <input.bam> [<output.bai>]
+
+## DESCRIPTION
+
+`sambamba index` builds an index for a sorted by coordinate BAM file.
+This step is required for effective region querying in most tools for working
+with BAM data.
+
+An index is by default written to the file with the same filename except
+`.bai` extension added to the end. The user can, however, override this default
+by providing desired output filename explicitly as an optional command-line
+argument.
+
+## OPTIONS
+
+ * `-p`, `--show-progress`:
+ Show a wget-like progressbar in STDERR.
+
+ * `-t`, `--nthreads`=<NTHREADS>:
+ Number of threads to use.
+
+## EXAMPLES
+
+Build index file example.bam.bai given a sorted BAM file example.bam:
+
+ $ sambamba index example.bam
+
+Build index file at custom location showing progress:
+
+ $ sambamba index --show-progress example.bam /tmp/example.bam.bai
+
+# SEE ALSO
+
+For more information on the original samtools INDEX behaviour, check
+out the [samtools documentation](http://samtools.sourceforge.net/samtools.shtml
+
diff --git a/man/sambamba-markdup.1 b/man/sambamba-markdup.1
new file mode 100644
index 0000000..c6bff1c
--- /dev/null
+++ b/man/sambamba-markdup.1
@@ -0,0 +1,53 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-MARKDUP" "1" "February 2015" "" ""
+.
+.SH "NAME"
+\fBsambamba\-markdup\fR \- finding duplicate reads in BAM file
+.
+.SH "SYNOPSIS"
+\fBsambamba markdup\fR \fIOPTIONS\fR <input\.bam> <output\.bam>
+.
+.SH "DESCRIPTION"
+Marks (by default) or removes duplicate reads\. For determining whether a read is a duplicate or not, the same `sum of base qualities\' method is used as in Picard \fIhttps://broadinstitute\.github\.io/picard/picard\-metric\-definitions\.html\fR\.
+.
+.SH "OPTIONS"
+.
+.TP
+\fB\-r\fR, \fB\-\-remove\-duplicates\fR
+remove duplicates instead of just marking them
+.
+.TP
+\fB\-t\fR, \fB\-\-nthreads\fR=\fINTHREADS\fR
+number of threads to use
+.
+.TP
+\fB\-l\fR, \fB\-\-compression\-level\fR=\fIN\fR
+specify compression level of the resulting file (from 0 to 9)");
+.
+.TP
+\fB\-p\fR, \fB\-\-show\-progress\fR
+show progressbar in STDERR
+.
+.TP
+\fB\-\-tmpdir\fR=\fITMPDIR\fR
+specify directory for temporary files; default is \fB/tmp\fR
+.
+.TP
+\fB\-\-hash\-table\-size\fR=\fIHASHTABLESIZE\fR
+size of hash table for finding read pairs (default is 262144 reads); will be rounded down to the nearest power of two; should be \fB> (average coverage) * (insert size)\fR for good performance
+.
+.TP
+\fB\-\-overflow\-list\-size\fR=\fIOVERFLOWLISTSIZE\fR
+size of the overflow list where reads, thrown away from the hash table, get a second chance to meet their pairs (default is 200000 reads); increasing the size reduces the number of temporary files created
+.
+.TP
+\fB\-\-io\-buffer\-size\fR=\fIBUFFERSIZE\fR
+controls sizes of two buffers of BUFFERSIZE \fImegabytes\fR each, used for reading and writing BAM during the second pass (default is 128)
+.
+.SH "SEE ALSO"
+Picard \fIhttps://broadinstitute\.github\.io/picard/picard\-metric\-definitions\.html\fR metric definitions for removing duplicates\.
+.
+.SH "BUGS"
+External sort is not implemented\. Thus, memory consumption grows by 2Gb per each 100M reads\. Check that you have enough RAM before running the tool\.
diff --git a/man/sambamba-markdup.1.ronn b/man/sambamba-markdup.1.ronn
new file mode 100644
index 0000000..5c64e26
--- /dev/null
+++ b/man/sambamba-markdup.1.ronn
@@ -0,0 +1,56 @@
+sambamba-markdup(1) -- finding duplicate reads in BAM file
+=============================================================
+
+## SYNOPSIS
+
+`sambamba markdup` [OPTIONS] <input.bam> <output.bam>
+
+## DESCRIPTION
+
+Marks (by default) or removes duplicate reads. For determining
+whether a read is a duplicate or not, the same `sum of base qualities' method is
+used as in [Picard](https://broadinstitute.github.io/picard/picard-metric-definitions.html).
+
+## OPTIONS
+
+ * `-r`, `--remove-duplicates`:
+ remove duplicates instead of just marking them
+
+ * `-t`, `--nthreads`=<NTHREADS>:
+ number of threads to use
+
+ * `-l`, `--compression-level`=<N>:
+ specify compression level of the resulting file (from 0 to 9)");
+
+ * `-p`, `--show-progress`:
+ show progressbar in STDERR
+
+ * `--tmpdir`=<TMPDIR>:
+ specify directory for temporary files; default is `/tmp`
+
+ * `--hash-table-size`=<HASHTABLESIZE>:
+ size of hash table for finding read pairs (default is 262144 reads);
+ will be rounded down to the nearest power of two;
+ should be `> (average coverage) * (insert size)` for good performance
+
+ * `--overflow-list-size`=<OVERFLOWLISTSIZE>:
+ size of the overflow list where reads, thrown away from the hash table,
+ get a second chance to meet their pairs (default is 200000 reads);
+ increasing the size reduces the number of temporary files created
+
+ * `--io-buffer-size`=<BUFFERSIZE>:
+ controls sizes of two buffers of BUFFERSIZE *megabytes* each, used
+ for reading and writing BAM during the second pass (default is 128)
+
+## SEE ALSO
+
+[Picard](https://broadinstitute.github.io/picard/picard-metric-definitions.html) metric
+definitions for removing duplicates.
+
+
+## BUGS
+
+ External sort is not implemented.
+ Thus, memory consumption grows by 2Gb per each 100M reads.
+ Check that you have enough RAM before running the tool.
+
diff --git a/man/sambamba-merge.1 b/man/sambamba-merge.1
new file mode 100644
index 0000000..39e793d
--- /dev/null
+++ b/man/sambamba-merge.1
@@ -0,0 +1,35 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-MERGE" "1" "February 2015" "" ""
+.
+.SH "NAME"
+\fBsambamba\-merge\fR \- tool for merging several BAM files into one
+.
+.SH "SYNOPSIS"
+\fBsambamba merge\fR \fIOPTIONS\fR <output\.bam> <input1\.bam> <input2\.bam> [\.\.\.]
+.
+.SH "DESCRIPTION"
+\fBsambamba merge\fR is used for merging several sorted BAM files into one\. The sorting order of all the files must be the same, and it is maintained in the output file\.
+.
+.P
+SAM headers are merged automatically like in Picard merging tool\.
+.
+.SH "OPTIONS"
+.
+.TP
+\fB\-t\fR, \fB\-\-nthreads\fR=\fINTHREADS\fR
+Specify number of threads to use for compression/decompression tasks\.
+.
+.TP
+\fB\-l\fR, \fB\-\-compression\-level\fR=\fICOMPRESSION_LEVEL\fR
+Specify compression level of output file as a number from 0 to 9
+.
+.TP
+\fB\-H\fR, \fB\-\-header\fR
+Output only merged header to stdout in SAM format (e\.g\. for debugging purposes)\. Other options are ignored\.
+.
+.TP
+\fB\-p\fR, \fB\-\-show\-progress\fR
+Show progressbar in STDERR\.
+For more information on the original samtools MERGE behaviour, check out the [samtools documentation](http://samtools\.sourceforge\.net/samtools\.shtml
diff --git a/man/sambamba-merge.1.ronn b/man/sambamba-merge.1.ronn
new file mode 100644
index 0000000..1978ee1
--- /dev/null
+++ b/man/sambamba-merge.1.ronn
@@ -0,0 +1,34 @@
+sambamba-merge(1) -- tool for merging several BAM files into one
+================================================================
+
+## SYNOPSIS
+
+`sambamba merge` [OPTIONS] <output.bam> <input1.bam> <input2.bam> [...]
+
+## DESCRIPTION
+
+`sambamba merge` is used for merging several sorted BAM files into one.
+The sorting order of all the files must be the same, and it is maintained in the output file.
+
+SAM headers are merged automatically like in Picard merging tool.
+
+## OPTIONS
+
+ * `-t`, `--nthreads`=<NTHREADS>:
+ Specify number of threads to use for compression/decompression tasks.
+
+ * `-l`, `--compression-level`=<COMPRESSION_LEVEL>:
+ Specify compression level of output file as a number from 0 to 9
+
+ * `-H`, `--header`:
+ Output only merged header to stdout in SAM format (e.g. for debugging purposes).
+ Other options are ignored.
+
+ * `-p`, `--show-progress`:
+ Show progressbar in STDERR.
+
+# SEE ALSO
+
+For more information on the original samtools MERGE behaviour, check
+out the [samtools documentation](http://samtools.sourceforge.net/samtools.shtml
+
diff --git a/man/sambamba-pileup.1 b/man/sambamba-pileup.1
new file mode 100644
index 0000000..1ee6c1f
--- /dev/null
+++ b/man/sambamba-pileup.1
@@ -0,0 +1,60 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-MILEUP" "1" "January 2015" "" ""
+.
+.SH "NAME"
+\fBsambamba\-mileup\fR \- make a pileup
+.
+.SH "SYNOPSIS"
+\fBsambamba mpileup\fR \fIOPTIONS\fR <input1\.bam> <input2\.bam> [\.\.\.] [\-\-samtools \fIsamtools mpileup args\fR] [\-\-bcftools \fIbcftools args\fR]
+.
+.SH "DESCRIPTION"
+Parallel version of samtools mpileup in map\-reduce fashion\. Sambamba splits input BAM files into chunks and feeds them to samtools mpileup and, optionally, bcftools in parallel\. The chunks are slightly overlapping so that variant calling should not be impacted by these manipulations\. The obtained results from the multiple processes are combined as ordered output\. Named pipes are created in TMPDIR\.
+.
+.P
+Sambamba mpileup relies on external tools and acts as a multi\-core implementation of samtools + bcftools\. Therefore, the following tools should be present in the PATH:
+.
+.IP "" 4
+.
+.nf
+
+* samtools
+* bcftools (when used)
+.
+.fi
+.
+.IP "" 0
+.
+.IP "\(bu" 4
+If \-\-samtools is skipped, samtools mpileup is called with default arguments \'samtools\'
+.
+.IP "\(bu" 4
+If \-\-bcftools is used without parameters, samtools is called with switch \'\-gu\' and bcftools is called as \'bcftools view \-Ov\'
+.
+.IP "\(bu" 4
+If \-\-bcftools is skipped, bcftools is not called
+.
+.IP "" 0
+.
+.SH "OPTIONS"
+.
+.IP "\(bu" 4
+\fB\-F\fR, \fB\-\-filter=FILTER\fR set custom filter for alignments
+.
+.IP "\(bu" 4
+\fB\-L\fR, \fB\-\-regions=FILENAME\fR provide BED file with regions (no need to duplicate it in samtools args); all input files must be indexed
+.
+.IP "\(bu" 4
+\fB\-o\fR, \fB\-\-output\-filename=<STDOUT>\fR specify output filename
+.
+.IP "\(bu" 4
+\fB\-t\fR, \fB\-\-nthreads=NTHREADS\fR maximum number of threads to use
+.
+.IP "\(bu" 4
+\fB\-b\fR, \fB\-\-buffer\-size=4_000_000\fR chunk size (in bytes)
+.
+.IP "" 0
+.
+.SH "BUGS"
+
diff --git a/man/sambamba-pileup.1.ronn b/man/sambamba-pileup.1.ronn
new file mode 100644
index 0000000..3ce5832
--- /dev/null
+++ b/man/sambamba-pileup.1.ronn
@@ -0,0 +1,53 @@
+sambamba-mileup(1) -- make a pileup
+=============================================================
+
+## SYNOPSIS
+
+`sambamba mpileup` [OPTIONS] <input1.bam> <input2.bam> [...]
+ [--samtools <samtools mpileup args>]
+ [--bcftools <bcftools args>]
+
+
+
+## DESCRIPTION
+
+Parallel version of samtools mpileup in map-reduce fashion. Sambamba
+splits input BAM files into chunks and feeds them to samtools mpileup
+and, optionally, bcftools in parallel. The chunks are slightly
+overlapping so that variant calling should not be impacted by these
+manipulations. The obtained results from the multiple processes are
+combined as ordered output. Named pipes are created in TMPDIR.
+
+Sambamba mpileup relies on external tools and acts as a multi-core
+implementation of samtools + bcftools. Therefore, the following tools
+should be present in the PATH:
+
+ * samtools
+ * bcftools (when used)
+
+
+* If --samtools is skipped, samtools mpileup is called with default arguments 'samtools'
+* If --bcftools is used without parameters, samtools is called with switch '-gu' and bcftools is called as 'bcftools view -Ov'
+* If --bcftools is skipped, bcftools is not called
+
+## OPTIONS
+
+ * `-F`, `--filter=FILTER`
+ set custom filter for alignments
+
+ * `-L`, `--regions=FILENAME`
+ provide BED file with regions
+ (no need to duplicate it in samtools args);
+ all input files must be indexed
+
+ * `-o`, `--output-filename=<STDOUT>`
+ specify output filename
+
+ * `-t`, `--nthreads=NTHREADS`
+ maximum number of threads to use
+
+ * `-b`, `--buffer-size=4_000_000`
+ chunk size (in bytes)
+
+## BUGS
+
diff --git a/man/sambamba-slice.1 b/man/sambamba-slice.1
new file mode 100644
index 0000000..654efcf
--- /dev/null
+++ b/man/sambamba-slice.1
@@ -0,0 +1,23 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-SLICE" "1" "August 2014" "" ""
+.
+.SH "NAME"
+\fBsambamba\-slice\fR \- copying a slice of BAM file
+.
+.SH "SYNOPSIS"
+\fBsambamba slice\fR \fIOPTIONS\fR <input\.bam> \fIregion\fR
+.
+.SH "DESCRIPTION"
+Outputs reads overlapping specified region into new BAM file\. (Default destination is STDOUT\.) Input file must be coordinate\-sorted and indexed\.
+.
+.P
+While the same can be done with \fIsambamba\-view\fR, that would be much slower due to a lot of compression/decompression work\. Instead of naive method, \fIsambamba\-slice\fR leverages knowledge about structure of BAM file and recompresses only a few BGZF blocks at the beginning and the end of the region, while the BGZF blocks in the middle are copied as is\. As such, this tool doesn\'t offer any options related to number of threads or compression level \- most of the time is spent on I [...]
+.
+.SH "OPTIONS"
+.
+.TP
+\fB\-o\fR, \fB\-\-output\-filename\fR=\fIOUTPUTFILE\fR
+Name of output file
+
diff --git a/man/sambamba-slice.1.ronn b/man/sambamba-slice.1.ronn
new file mode 100644
index 0000000..59f8692
--- /dev/null
+++ b/man/sambamba-slice.1.ronn
@@ -0,0 +1,26 @@
+sambamba-slice(1) -- copying a slice of BAM file
+=============================================================
+
+## SYNOPSIS
+
+`sambamba slice` [OPTIONS] <input.bam> <region>
+
+## DESCRIPTION
+
+Outputs reads overlapping specified region into new BAM file.
+(Default destination is STDOUT.)
+Input file must be coordinate-sorted and indexed.
+
+While the same can be done with *sambamba-view*, that would be
+much slower due to a lot of compression/decompression work.
+Instead of naive method, *sambamba-slice* leverages knowledge
+about structure of BAM file and recompresses only a few BGZF
+blocks at the beginning and the end of the region, while the
+BGZF blocks in the middle are copied as is. As such, this tool
+doesn't offer any options related to number of threads or
+compression level - most of the time is spent on I/O operations.
+
+## OPTIONS
+
+ * `-o`, `--output-filename`=<OUTPUTFILE>:
+ Name of output file
diff --git a/man/sambamba-sort.1 b/man/sambamba-sort.1
new file mode 100644
index 0000000..937ece4
--- /dev/null
+++ b/man/sambamba-sort.1
@@ -0,0 +1,68 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-SORT" "1" "February 2015" "" ""
+.
+.SH "NAME"
+\fBsambamba\-sort\fR \- tool for sorting BAM files
+.
+.SH "SYNOPSIS"
+\fBsambamba sort\fR \fIOPTIONS\fR <input\.bam>
+.
+.SH "DESCRIPTION"
+BAM files can have either \'coordinate\' sort order, or \'qname\' one\.
+.
+.P
+The first one means to sort the file by (integer) reference ID, and for each reference sort corresponding reads by start coordinate\.
+.
+.P
+\'qname\' sorting order is when reads are sorted lexicographically by their names\.
+.
+.P
+\fBsambamba sort\fR does an external \fBstable\fR\-type sort on input file\. That means it reads the source BAM file in chunks that fit into memory, sorts them and writes to a temporary directory, and then merges them\. After merging temporary files are removed automatically\.
+.
+.P
+Both sorting orders are supported\. Default one is \'coordinate\' because this is the one used for building index later\. In order to switch to \'qname\' sorting order, use \fB\-n\fR|\fB\-\-sort\-by\-name\fR flag\.
+.
+.SH "OPTIONS"
+.
+.TP
+\fB\-m\fR, \fB\-\-memory\-limit\fR=\fILIMIT\fR
+Sets an upper bound for used memory\. However, this is very approximate\. Default memory limit is 512MiB\. Increasing it will allow to make chunk sizes larger and also reduce amount of I/O seeks thus improving the overall performance\.
+.
+.IP
+\fILIMIT\fR must be a number with an optional suffix specyfying unit of measumerent\. The following endings are recognized: K, KiB, KB, M, MiB, MB, G, GiB, GB\.
+.
+.TP
+\fB\-\-tmpdir\fR=\fITMPDIR\fR
+Use \fITMPDIR\fR to output sorted chunks\. Default behaviour is to use system temporary directory\.
+.
+.TP
+\fB\-o\fR, \fB\-\-out\fR=\fIOUTPUTFILE\fR
+Output file name\. If not provided, the result is written to a file with \.sorted\.bam extension\.
+.
+.TP
+\fB\-n\fR, \fB\-\-sort\-by\-name\fR
+Sort by read name instead of doing coordinate sort\.
+.
+.TP
+\fB\-l\fR, \fB\-\-compression\-level\fR=\fICOMPRESSION_LEVEL\fR
+Compression level to use for \fIsorted\fR BAM, from 0 (known as uncompressed BAM in samtools) to 9\.
+.
+.TP
+\fB\-u\fR, \fB\-\-uncompressed\-chunks\fR
+Write sorted chunks as uncompressed BAM\. Default behaviour is to write them with compression level 1, because that reduces time spent on I/O, but in some cases using this option can give you a better speed\. Note, however, that the disk space needed for sorting will typically be 3\-4 times more than without enabling this option\.
+.
+.TP
+\fB\-p\fR, \fB\-\-show\-progress\fR
+Show wget\-like progressbar in STDERR (in fact, two of them one after another, first one for sorting, and then another one for merging)\.
+.
+.TP
+\fB\-t\fR, \fB\-\-nthreads\fR=\fINTHREADS\fR
+Number of threads to use\.
+.
+.SH "SEE ALSO"
+For more information on the original samtools SORT behaviour, check out the samtools documentation \fIhttp://samtools\.sourceforge\.net/samtools\.shtml\fR\.
+.
+.SH "BUGS"
+At the moment, the memory is used quite ineffectively for really large files\.
diff --git a/man/sambamba-sort.1.ronn b/man/sambamba-sort.1.ronn
new file mode 100644
index 0000000..a4646bb
--- /dev/null
+++ b/man/sambamba-sort.1.ronn
@@ -0,0 +1,72 @@
+sambamba-sort(1) -- tool for sorting BAM files
+==============================================
+
+## SYNOPSIS
+
+`sambamba sort` [OPTIONS] <input.bam>
+
+## DESCRIPTION
+
+BAM files can have either 'coordinate' sort order, or 'qname' one.
+
+The first one means to sort the file by (integer) reference ID, and
+for each reference sort corresponding reads by start coordinate.
+
+'qname' sorting order is when reads are sorted lexicographically by
+their names.
+
+`sambamba sort` does an external `stable`-type sort on input file. That means it
+reads the source BAM file in chunks that fit into memory, sorts them
+and writes to a temporary directory, and then merges them. After merging
+temporary files are removed automatically.
+
+Both sorting orders are supported. Default one is 'coordinate'
+because this is the one used for building index later. In order to
+switch to 'qname' sorting order, use `-n`|`--sort-by-name` flag.
+
+## OPTIONS
+
+ * `-m`, `--memory-limit`=<LIMIT>:
+ Sets an upper bound for used memory. However, this is very approximate.
+ Default memory limit is 512MiB. Increasing it will allow to make chunk
+ sizes larger and also reduce amount of I/O seeks thus improving the overall
+ performance.
+
+ <LIMIT> must be a number with an optional suffix specyfying unit of measumerent.
+ The following endings are recognized: K, KiB, KB, M, MiB, MB, G, GiB, GB.
+
+ * `--tmpdir`=<TMPDIR>:
+ Use <TMPDIR> to output sorted chunks. Default behaviour is to use system
+ temporary directory.
+
+ * `-o`, `--out`=<OUTPUTFILE>:
+ Output file name. If not provided, the result is written to a file with .sorted.bam extension.
+
+ * `-n`, `--sort-by-name`:
+ Sort by read name instead of doing coordinate sort.
+
+ * `-l`, `--compression-level`=<COMPRESSION_LEVEL>:
+ Compression level to use for *sorted* BAM, from 0 (known as uncompressed BAM in samtools) to 9.
+
+ * `-u`, `--uncompressed-chunks`:
+ Write sorted chunks as uncompressed BAM.
+ Default behaviour is to write them with compression level 1, because that reduces time spent on I/O,
+ but in some cases using this option can give you a better speed. Note, however, that the disk space
+ needed for sorting will typically be 3-4 times more than without enabling this option.
+
+ * `-p`, `--show-progress`:
+ Show wget-like progressbar in STDERR (in fact, two of them one after another, first one for sorting,
+ and then another one for merging).
+
+ * `-t`, `--nthreads`=<NTHREADS>:
+ Number of threads to use.
+
+## SEE ALSO
+
+For more information on the original samtools SORT behaviour, check
+out the [samtools documentation](http://samtools.sourceforge.net/samtools.shtml).
+
+## BUGS
+
+At the moment, the memory is used quite ineffectively for really large files.
+
diff --git a/man/sambamba-view.1 b/man/sambamba-view.1
new file mode 100644
index 0000000..28f8d49
--- /dev/null
+++ b/man/sambamba-view.1
@@ -0,0 +1,174 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA\-VIEW" "1" "June 2016" "" ""
+.
+.SH "NAME"
+\fBsambamba\-view\fR \- tool for extracting information from SAM/BAM/CRAM files
+.
+.SH "SYNOPSIS"
+\fBsambamba view\fR \fIOPTIONS\fR <input\.bam | input\.sam | input\.cram> [region1 [\.\.\.]]
+.
+.SH "DESCRIPTION"
+\fBsambamba view\fR allows to efficiently filter SAM/BAM/CRAM files for alignments satisfying various conditions, as well as access its SAM header and information about reference sequences\. In order to make these data readily available for consumption by scripts in Perl/Python/Ruby, JSON output is provided\.
+.
+.P
+By default, the tool expects BAM file as an input\. In order to work with CRAM, specify \-C and for SAM, specify \fB\-S\fR|\fB\-\-sam\-input\fR as a command\-line option, the tool does NOT try to guess file format from the extension\. Beware that when reading SAM, the tool will skip tags which don\'t conform to the SAM/BAM specification, and set invalid fields to their default values\.
+.
+.SH "FILTERING"
+Filtering is presented in two ways\. First, you can specify a condition with \fB\-F\fR option, using a special language for filtering, described at
+.
+.P
+https://github\.com/lomereiter/sambamba/wiki/%5Bsambamba\-view%5D\-Filter\-expression\-syntax
+.
+.P
+Second, if you have an indexed BAM file, several regions can be specified as well\. The syntax for regions is the same as in samtools: \fIchr\fR:\fIbeg\fR\-\fIend\fR where \fIbeg\fR and \fIend\fR are 1\-based start and end of a closed\-end interval on the reference \fIchr\fR\.
+.
+.SH "JSON"
+Alignment record JSON representation is a hash with keys \'qname\', \'flag\', \'rname\', \'pos\', \'mapq\', \'cigar\', \'rnext\', \'qual\', \'tags\', e\.g\.
+.
+.P
+{"qname":"EAS56_57:6:190:289:82","flag":69,"rname":"chr1","pos":100,
+.
+.br
+"mapq":0,"cigar":"*","rnext":"=","pnext":100,"tlen":0,
+.
+.br
+"seq":"CTCAAGGTTGTTGCAAGGGGGTCTATGTGAACAAA",
+.
+.br
+"qual":[27,27,27,22,27,27,27,26,27,27,27,27,27,27,27,27,23,26,26,27,
+.
+.br
+22,26,19,27,26,27,26,26,26,26,26,24,19,27,26],"tags":{"MF":192}}
+.
+.P
+JSON representation mimics SAM format except quality is given as an array of integers\.
+.
+.P
+Postprocessing JSON output is best accomplished with https://stedolan\.github\.io/jq/
+.
+.P
+The output is one line per read, for building a proper JSON array pipe the output into \fBjq \-\-slurp\fR\.
+.
+.SH "OPTIONS"
+.
+.TP
+\fB\-F\fR, \fB\-\-filter\fR=\fIFILTER\fR
+Set custom filter for alignments\.
+.
+.TP
+\fB\-f\fR, \fB\-\-format\fR=\fIFORMAT\fR
+Specify output format\. \fIFORMAT\fR must be one of sam, bam, cram, or json (in lowercase)\. Default is SAM\.
+.
+.TP
+\fB\-h\fR, \fB\-\-with\-header\fR
+Print SAM header before reads\. This is always done for BAM output\.
+.
+.TP
+\fB\-H\fR, \fB\-\-header\fR
+Print only SAM header to STDOUT\. If \fIFORMAT\fR is sam or bam, its text version is printed, otherwise JSON object is written\.
+.
+.TP
+\fB\-I\fR, \fB\-\-reference\-info\fR
+Output to STDOUT reference sequence names and lengths in JSON (see \fIEXAMPLES\fR)\.
+.
+.TP
+\fB\-L\fR, \fB\-\-regions\fR=\fIBEDFILE\fR
+Intersect a file with regions specified in the BED file\.
+.
+.TP
+\fB\-c\fR, \fB\-\-count\fR
+Output to STDOUT only the number of matching records, \-hHI options are ignored\.
+.
+.TP
+\fB\-v\fR, \fB\-\-valid\fR
+Output only valid reads\.
+.
+.TP
+\fB\-S\fR, \fB\-\-sam\-input\fR
+Specify that the input is SAM file (default is BAM for all operations)\.
+.
+.TP
+\fB\-C\fR, \fB\-\-cram\-input\fR
+Specify that input is in CRAM format
+.
+.TP
+\fB\-p\fR, \fB\-\-show\-progress\fR
+Show progressbar in STDERR\. Works only for BAM files, and with no regions specified, i\.e\. only when reading full file\.
+.
+.TP
+\fB\-l\fR, \fB\-\-compression\-level\fR=\fICOMPRESSION_LEVEL\fR
+Set compression level for BAM output, a number from 0 to 9\.
+.
+.TP
+\fB\-o\fR, \fB\-\-output\-filename\fR=\fIFILENAME\fR
+Specify output filename (by default everything is written to STDOUT)\.
+.
+.TP
+\fB\-t\fR, \fB\-\-nthreads\fR=\fINTHREADS\fR
+Number of threads to use\.
+.
+.SH "EXAMPLES"
+Print basic reference sequence information:
+.
+.IP "" 4
+.
+.nf
+
+ $ sambamba view \-\-reference\-info ex1_header\.bam
+ [{"name":"chr1","length":1575},{"name":"chr2","length":1584}]
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Count reads with mapping quality not less than 50:
+.
+.IP "" 4
+.
+.nf
+
+ $ sambamba view \-c \-F "mapping_quality >= 50" ex1_header\.bam
+ 3124
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Count properly paired reads overlapping 100\.\.200 on chr1:
+.
+.IP "" 4
+.
+.nf
+
+ $ sambamba view \-c \-F "proper_pair" ex1_header\.bam chr1:100\-200
+ 39
+.
+.fi
+.
+.IP "" 0
+.
+.P
+Output header in JSON format:
+.
+.IP "" 4
+.
+.nf
+
+ $ sambamba view \-\-header \-\-format=json ex1_header\.bam
+ {"format_version":"1\.3","rg_lines":[],
+ "sq_lines":[{"sequence_length":1575,"species":"","uri":"",
+ "sequence_name":"chr1","assembly":"","md5":""},
+ {"sequence_length":1584,"species":"","uri":"",
+ "sequence_name":"chr2","assembly":"","md5":""}],
+ "sorting_order":"coordinate","pg_lines":[]}
+.
+.fi
+.
+.IP "" 0
+.
+.SH "SEE ALSO"
+For more information on the original samtools VIEW behaviour, check out the samtools documentation \fIhttp://samtools\.sourceforge\.net/samtools\.shtml\fR\.
diff --git a/man/sambamba-view.1.ronn b/man/sambamba-view.1.ronn
new file mode 100644
index 0000000..cb1d357
--- /dev/null
+++ b/man/sambamba-view.1.ronn
@@ -0,0 +1,128 @@
+sambamba-view(1) -- tool for extracting information from SAM/BAM/CRAM files
+======================================================================
+
+## SYNOPSIS
+
+`sambamba view` [OPTIONS] <input.bam | input.sam | input.cram> [region1 [...]]
+
+## DESCRIPTION
+
+`sambamba view` allows to efficiently filter SAM/BAM/CRAM files for
+alignments satisfying various conditions, as well as access its SAM
+header and information about reference sequences. In order to make
+these data readily available for consumption by scripts in
+Perl/Python/Ruby, JSON output is provided.
+
+By default, the tool expects BAM file as an input. In order to work
+with CRAM, specify -C and for SAM, specify `-S`|`--sam-input` as a
+command-line option, the tool does NOT try to guess file format from
+the extension. Beware that when reading SAM, the tool will skip tags
+which don't conform to the SAM/BAM specification, and set invalid
+fields to their default values.
+
+## FILTERING
+
+Filtering is presented in two ways. First, you can specify a condition
+with `-F` option, using a special language for filtering, described at
+
+https://github.com/lomereiter/sambamba/wiki/%5Bsambamba-view%5D-Filter-expression-syntax
+
+Second, if you have an indexed BAM file, several regions can be specified as well.
+The syntax for regions is the same as in samtools: <chr>:<beg>-<end> where <beg> and <end>
+are 1-based start and end of a closed-end interval on the reference <chr>.
+
+## JSON
+
+Alignment record JSON representation is a hash with keys 'qname', 'flag', 'rname', 'pos', 'mapq',
+'cigar', 'rnext', 'qual', 'tags', e.g.
+
+{"qname":"EAS56_57:6:190:289:82","flag":69,"rname":"chr1","pos":100,
+ "mapq":0,"cigar":"*","rnext":"=","pnext":100,"tlen":0,
+ "seq":"CTCAAGGTTGTTGCAAGGGGGTCTATGTGAACAAA",
+ "qual":[27,27,27,22,27,27,27,26,27,27,27,27,27,27,27,27,23,26,26,27,
+ 22,26,19,27,26,27,26,26,26,26,26,24,19,27,26],"tags":{"MF":192}}
+
+JSON representation mimics SAM format except quality is given as an array of integers.
+
+Postprocessing JSON output is best accomplished with https://stedolan.github.io/jq/
+
+The output is one line per read, for building a proper JSON array pipe the output into `jq --slurp`.
+
+## OPTIONS
+
+ * `-F`, `--filter`=<FILTER>:
+ Set custom filter for alignments.
+
+ * `-f`, `--format`=<FORMAT>:
+ Specify output format. <FORMAT> must be one of sam, bam, cram, or json (in lowercase).
+ Default is SAM.
+
+ * `-h`, `--with-header`:
+ Print SAM header before reads. This is always done for BAM output.
+
+ * `-H`, `--header`:
+ Print only SAM header to STDOUT. If <FORMAT> is sam or bam, its text version is
+ printed, otherwise JSON object is written.
+
+ * `-I`, `--reference-info`:
+ Output to STDOUT reference sequence names and lengths in JSON (see [EXAMPLES][]).
+
+ * `-L`, `--regions`=<BEDFILE>:
+ Intersect a file with regions specified in the BED file.
+
+ * `-c`, `--count`:
+ Output to STDOUT only the number of matching records, -hHI options are ignored.
+
+ * `-v`, `--valid`:
+ Output only valid reads.
+
+ * `-S`, `--sam-input`:
+ Specify that the input is SAM file (default is BAM for all operations).
+
+ * `-C`, `--cram-input`:
+ Specify that input is in CRAM format
+
+ * `-p`, `--show-progress`:
+ Show progressbar in STDERR. Works only for BAM files, and with no regions
+ specified, i.e. only when reading full file.
+
+ * `-l`, `--compression-level`=<COMPRESSION_LEVEL>:
+ Set compression level for BAM output, a number from 0 to 9.
+
+ * `-o`, `--output-filename`=<FILENAME>:
+ Specify output filename (by default everything is written to STDOUT).
+
+ * `-t`, `--nthreads`=<NTHREADS>:
+ Number of threads to use.
+
+## EXAMPLES
+
+ Print basic reference sequence information:
+
+ $ sambamba view --reference-info ex1_header.bam
+ [{"name":"chr1","length":1575},{"name":"chr2","length":1584}]
+
+ Count reads with mapping quality not less than 50:
+
+ $ sambamba view -c -F "mapping_quality >= 50" ex1_header.bam
+ 3124
+
+ Count properly paired reads overlapping 100..200 on chr1:
+
+ $ sambamba view -c -F "proper_pair" ex1_header.bam chr1:100-200
+ 39
+
+ Output header in JSON format:
+
+ $ sambamba view --header --format=json ex1_header.bam
+ {"format_version":"1.3","rg_lines":[],
+ "sq_lines":[{"sequence_length":1575,"species":"","uri":"",
+ "sequence_name":"chr1","assembly":"","md5":""},
+ {"sequence_length":1584,"species":"","uri":"",
+ "sequence_name":"chr2","assembly":"","md5":""}],
+ "sorting_order":"coordinate","pg_lines":[]}
+
+## SEE ALSO
+
+For more information on the original samtools VIEW behaviour, check
+out the [samtools documentation](http://samtools.sourceforge.net/samtools.shtml).
diff --git a/man/sambamba.1 b/man/sambamba.1
new file mode 100644
index 0000000..063b2f1
--- /dev/null
+++ b/man/sambamba.1
@@ -0,0 +1,45 @@
+.\" generated with Ronn/v0.7.3
+.\" http://github.com/rtomayko/ronn/tree/0.7.3
+.
+.TH "SAMBAMBA" "1" "February 2015" "" ""
+.
+.SH "NAME"
+\fBsambamba\fR \- toolkit for working with SAM/BAM/CRAM files
+.
+.SH "SYNOPSIS"
+\fBsambamba\fR [subcommand] [arguments\.\.\.]
+.
+.SH "DESCRIPTION"
+\fBsambamba\fR unifies several independent tools in one executable:
+.
+.IP "\(bu" 4
+sambamba\-view(1)
+.
+.IP "\(bu" 4
+sambamba\-index(1)
+.
+.IP "\(bu" 4
+sambamba\-merge(1)
+.
+.IP "\(bu" 4
+sambamba\-sort(1)
+.
+.IP "\(bu" 4
+sambamba\-markdup(1)
+.
+.IP "\(bu" 4
+sambamba\-flagstat(1)
+.
+.IP "\(bu" 4
+sambamba\-slice(1)
+.
+.IP "\(bu" 4
+sambamba\-pileup(1)
+.
+.IP "" 0
+.
+.P
+Thus available subcommands are \fIview\fR, \fIindex\fR, \fImerge\fR, \fIsort\fR, \fImarkdup\fR, \fIflagstat\fR, \fIslice\fR, and \fImpileup\fR\. Their use is explained on the corresponding man pages\.
+.
+.P
+Note that sambamba uses all available cores by default\.
diff --git a/man/sambamba.1.ronn b/man/sambamba.1.ronn
new file mode 100644
index 0000000..05582e9
--- /dev/null
+++ b/man/sambamba.1.ronn
@@ -0,0 +1,24 @@
+sambamba(1) -- toolkit for working with SAM/BAM/CRAM files
+==========================================================
+
+## SYNOPSIS
+
+`sambamba` [subcommand] [arguments...]
+
+## DESCRIPTION
+
+`sambamba` unifies several independent tools in one executable:
+
+* sambamba-view(1)
+* sambamba-index(1)
+* sambamba-merge(1)
+* sambamba-sort(1)
+* sambamba-markdup(1)
+* sambamba-flagstat(1)
+* sambamba-slice(1)
+* sambamba-pileup(1)
+
+Thus available subcommands are *view*, *index*, *merge*, *sort*, *markdup*,
+*flagstat*, *slice*, and *mpileup*. Their use is explained on the corresponding man pages.
+
+Note that sambamba uses all available cores by default.
\ No newline at end of file
diff --git a/randomize_bases.d b/randomize_bases.d
new file mode 100644
index 0000000..4c24db4
--- /dev/null
+++ b/randomize_bases.d
@@ -0,0 +1,22 @@
+import bio.bam.reader;
+import bio.bam.writer;
+import std.random;
+
+void main(string[] args) {
+ auto bam = new BamReader(args[1]);
+ auto w = new BamWriter(args[2]);
+ scope(exit) w.finish();
+
+ auto gen = Random(unpredictableSeed);
+
+ w.writeSamHeader(bam.header);
+ w.writeReferenceSequenceInfo(bam.reference_sequences);
+
+ foreach (r; bam.reads) {
+ auto new_seq = new ubyte[r.sequence.length];
+ foreach (ref x; new_seq)
+ x = "ACGT"[uniform(0, 4, gen)];
+ r.sequence = cast(string)new_seq;
+ w.writeRecord(r);
+ }
+}
diff --git a/sambamba-ldmd-debug.rsp b/sambamba-ldmd-debug.rsp
new file mode 100644
index 0000000..31e9f0a
--- /dev/null
+++ b/sambamba-ldmd-debug.rsp
@@ -0,0 +1 @@
+"-g" "-c" "-m64" "-noboundscheck" "-IBioD/" "-ofbuild/sambamba.o" "-odbuild" "-I." "main.d" "BioD/bio/bam/baifile.d" "sambamba/depth.d" "BioD/bio/core/utils/switchendianness.d" "sambamba/utils/common/readstorage.d" "BioD/bio/core/utils/tmpfile.d" "sambamba/utils/common/bed.d" "BioD/bio/bam/utils/samheadermerger.d" "thirdparty/mergesort.d" "BioD/bio/bam/readrange.d" "cram/exception.d" "sambamba/utils/view/headerserializer.d" "BioD/bio/bam/splitter.d" "cram/htslib.d" "BioD/bio/core/utils/r [...]
diff --git a/sambamba-ldmd-release.rsp b/sambamba-ldmd-release.rsp
new file mode 100644
index 0000000..8a2e180
--- /dev/null
+++ b/sambamba-ldmd-release.rsp
@@ -0,0 +1 @@
+"-O2" "-c" "-m64" "-noboundscheck" "-release" "-inline" "-IBioD/" "-ofbuild/sambamba.o" "-odbuild" "-I." "main.d" "BioD/bio/bam/baifile.d" "sambamba/depth.d" "BioD/bio/core/utils/switchendianness.d" "sambamba/utils/common/readstorage.d" "BioD/bio/core/utils/tmpfile.d" "sambamba/utils/common/bed.d" "BioD/bio/bam/utils/samheadermerger.d" "thirdparty/mergesort.d" "BioD/bio/bam/readrange.d" "cram/exception.d" "sambamba/utils/view/headerserializer.d" "BioD/bio/bam/splitter.d" "cram/htslib.d" [...]
diff --git a/sambamba/depth.d b/sambamba/depth.d
new file mode 100644
index 0000000..e6bd6d5
--- /dev/null
+++ b/sambamba/depth.d
@@ -0,0 +1,1241 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.depth;
+
+import bio.bam.reader;
+import bio.bam.pileup;
+import bio.bam.region;
+import bio.bam.multireader;
+import bio.core.base;
+import bio.core.region;
+import sambamba.utils.common.bed;
+import sambamba.utils.common.filtering;
+import sambamba.utils.common.intervaltree;
+
+import std.stdio;
+import std.exception;
+import std.ascii: isWhite;
+import std.range;
+import std.algorithm;
+import std.array;
+import std.getopt;
+import std.parallelism;
+import std.typecons;
+
+version(standalone) {
+ int main(string[] args) {
+ return depth_main(args);
+ }
+}
+
+alias uint pos_t;
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-depth region|window|base [options] input.bam [input2.bam [...]]");
+ stderr.writeln();
+ stderr.writeln(" All BAM files must be coordinate-sorted and indexed.");
+ stderr.writeln();
+ stderr.writeln(" The tool has three modes: base, region, and window,");
+ stderr.writeln(" each name means per which unit to print the statistics.");
+ stderr.writeln();
+ stderr.writeln("Common options:");
+ stderr.writeln(" -F, --filter=FILTER");
+ stderr.writeln(" set custom filter for alignments; the default value is");
+ stderr.writeln(" 'mapping_quality > 0 and not duplicate and not failed_quality_control'");
+ stderr.writeln(" -o, --output-file=FILENAME");
+ stderr.writeln(" output filename (by default /dev/stdout)");
+ stderr.writeln(" -t, --nthreads=NTHREADS");
+ stderr.writeln(" maximum number of threads to use");
+ stderr.writeln(" -c, --min-coverage=MINCOVERAGE");
+ stderr.writeln(" minimum mean coverage for output (default: 0 for region/window, 1 for base)");
+ stderr.writeln(" -C, --max-coverage=MAXCOVERAGE");
+ stderr.writeln(" maximum mean coverage for output");
+ stderr.writeln(" -q, --min-base-quality=QUAL");
+ stderr.writeln(" don't count bases with lower base quality");
+ stderr.writeln(" --combined");
+ stderr.writeln(" output combined statistics for all samples");
+ stderr.writeln(" -a, --annotate");
+ stderr.writeln(" add additional column of y/n instead of");
+ stderr.writeln(" skipping records not satisfying the criteria");
+ stderr.writeln(" -m, --fix-mate-overlaps");
+ stderr.writeln(" detect overlaps of mate reads and handle them on per-base basis");
+ stderr.writeln("base subcommand options:");
+ stderr.writeln(" -L, --regions=FILENAME|REGION");
+ stderr.writeln(" list or regions of interest or a single region in form chr:beg-end (optional)");
+ stderr.writeln(" -z, --report-zero-coverage (DEPRECATED, use --min-coverage=0 instead)");
+ stderr.writeln(" don't skip zero coverage bases");
+ stderr.writeln("region subcommand options:");
+ stderr.writeln(" -L, --regions=FILENAME|REGION");
+ stderr.writeln(" list or regions of interest or a single region in form chr:beg-end (required)");
+ stderr.writeln(" -T, --cov-threshold=COVTHRESHOLD");
+ stderr.writeln(" multiple thresholds can be provided,");
+ stderr.writeln(" for each one an extra column will be added,");
+ stderr.writeln(" the percentage of bases in the region");
+ stderr.writeln(" where coverage is more than this value");
+ stderr.writeln("window subcommand options:");
+ stderr.writeln(" -w, --window-size=WINDOWSIZE");
+ stderr.writeln(" breadth of the window, in bp (required)");
+ stderr.writeln(" --overlap=OVERLAP");
+ stderr.writeln(" overlap of successive windows, in bp (default is 0)");
+ stderr.writeln(" -T, --cov-threshold=COVTHRESHOLD");
+ stderr.writeln(" same meaning as in 'region' subcommand");
+}
+
+enum Mode {
+ base,
+ region,
+ window
+}
+
+abstract class RegionStatsCollector {
+ void nextColumn(uint ref_id, pos_t position,
+ scope void delegate(size_t id) updater);
+}
+
+class GeneralRegionStatsCollector : RegionStatsCollector {
+ private BamRegion[] bed_;
+
+ private {
+ // stores index of the region in initial array
+ alias size_t payload;
+ alias IntervalTree!(payload, uint) intervalTree;
+ alias IntervalTreeNode!(payload, uint) intervalTreeNode;
+ intervalTree[] trees_;
+ }
+
+ this(BamRegion[] bed) {
+ bed_ = bed;
+
+ if (bed.length == 0)
+ return;
+
+ size_t start_index = 0;
+ size_t end_index = start_index;
+
+ intervalTreeNode[][int] intervals;
+ foreach (i, line; bed) {
+ auto node = new intervalTreeNode(line.start, line.end, i);
+ intervals[line.ref_id] ~= node;
+ }
+
+ trees_.length = reduce!max(intervals.keys) + 1;
+ foreach (ref_id, ivs; intervals)
+ trees_[ref_id] = new intervalTree(ivs);
+ }
+
+ override void nextColumn(uint ref_id, pos_t position,
+ scope void delegate(size_t id) updater)
+ {
+ if (ref_id >= trees_.length || trees_[ref_id] is null)
+ return;
+
+ foreach (node; trees_[ref_id].eachOverlap(position, position + 1)) {
+ updater(node.value);
+ }
+ }
+}
+
+bool isSortedAndNonOverlapping(BamRegion[] bed) {
+ size_t n = bed.length;
+ if (n <= 1) return true;
+ foreach (k; 0 .. n - 1) {
+ auto reg1 = bed[k];
+ auto reg2 = bed[k + 1];
+ if (reg1.ref_id > reg2.ref_id)
+ return false;
+ if (reg1.ref_id < reg2.ref_id)
+ continue;
+ if (reg1.end > reg2.start)
+ return false;
+ }
+ return true;
+}
+
+class NonOverlappingRegionStatsCollector : RegionStatsCollector {
+ private BamRegion[] bed_;
+
+ size_t current_index_;
+
+ this(BamRegion[] bed) {
+ assert(isSortedAndNonOverlapping(bed));
+ bed_ = bed;
+ current_index_ = 0;
+ }
+
+ override void nextColumn(uint ref_id, pos_t position,
+ scope void delegate(size_t id) updater)
+ {
+ while (bed_.length > 0 &&
+ bed_.front.fullyLeftOf(ref_id, position))
+ {
+ bed_ = bed_[1 .. $];
+ ++current_index_;
+ }
+
+ if (bed_.length > 0 &&
+ bed_.front.overlaps(ref_id, position.to!uint))
+ {
+ updater(current_index_);
+ }
+ }
+}
+
+class WindowStatsCollector : RegionStatsCollector {
+ MultiBamReader bam;
+ size_t window_size;
+ size_t overlap;
+ size_t step;
+ size_t n;
+
+ this(MultiBamReader bam, size_t window_size, size_t overlap, size_t n) {
+ this.bam = bam;
+ this.window_size = window_size;
+ this.overlap = overlap;
+ step = window_size - overlap;
+ this.n = n;
+ }
+
+ override void nextColumn(uint ref_id, pos_t position,
+ scope void delegate(size_t id) updater)
+ {
+ size_t k;
+ if (position < window_size)
+ k = position / step + 1;
+ else
+ k = n;
+
+ foreach (id; 0 .. k)
+ updater(id);
+ }
+}
+
+enum MateOverlapStatus : ubyte {
+ none = 0,
+ detected = 1,
+ fixed = 2,
+ past = 3
+}
+
+struct CustomBamRead {
+ MultiBamRead!BamRead read;
+ alias read this;
+
+ this(MultiBamRead!BamRead read, uint[string] rg2id) {
+ this.read = read;
+ auto rg_value = read["RG"];
+ if (rg2id.length > 0 && !rg_value.is_nothing) {
+ auto rg_str = *(cast(string*)(&rg_value));
+ auto p = rg_str in rg2id;
+ if (!p)
+ throw new Exception("error in read " ~ read.name ~
+ ": read group " ~ rg_str ~ " is not present in the header");
+ sample_id = *p;
+ }
+
+ // FNV hashing
+ ulong h = 14695981039346656037UL;
+ foreach (ubyte b; read.name) {
+ h ^= b;
+ h *= 1099511628211UL;
+ }
+ read_name_hash = h;
+ }
+
+ ulong read_name_hash;
+ uint sample_id;
+ MateOverlapStatus mate_overlap = MateOverlapStatus.none;
+
+ CustomBamRead dup() @property const {
+ CustomBamRead r = void;
+ r.read = read.dup;
+ r.sample_id = sample_id;
+ r.read_name_hash = read_name_hash;
+ r.mate_overlap = mate_overlap;
+ return r;
+ }
+}
+
+alias Column = PileupRange!(InputRange!CustomBamRead).Column;
+
+abstract class ColumnPrinter {
+ double min_cov = 0.0;
+ double max_cov = 1e50;
+ ubyte min_base_quality = 0;
+ MultiBamReader bam;
+
+ bool combined = false;
+ bool annotate = false;
+ bool fix_mate_overlaps = false;
+ File output_file;
+
+ string[] sample_names;
+
+ BamRegion[] raw_bed;
+
+ void setBed(BamRegion[] bed) {
+ raw_bed = bed;
+ }
+
+ string[] raw_bed_lines;
+
+ abstract void init(ref string[] args);
+ abstract void push(ref Column);
+ abstract void close();
+
+ uint getSampleId(R)(auto ref R read) {
+ if (combined || sample_names.length == 1)
+ return 0;
+ return read.sample_id;
+ }
+
+ string getSampleName(uint sample_id) {
+ return sample_names[sample_id];
+ }
+
+ private {
+ Tuple!(ulong, size_t)[] read_name_hashes_buf;
+ Tuple!(size_t, size_t)[] overlapping_mate_positions_buf;
+ }
+
+ Tuple!(size_t, size_t)[] overlapping_mate_positions;
+
+ void detectOverlappingMates(ref Column column) {
+ if (!fix_mate_overlaps)
+ return;
+
+ size_t n = column.coverage;
+
+ if (n == 0) {
+ overlapping_mate_positions = [];
+ return;
+ }
+
+ if (n > read_name_hashes_buf.length) {
+ read_name_hashes_buf.length = n;
+ overlapping_mate_positions_buf.length = n;
+ }
+
+ for (size_t i = 0; i < n; i++)
+ read_name_hashes_buf[i] = tuple(column.reads[i].read_name_hash, i);
+
+ sort!((a, b) => a[0] < b[0])(read_name_hashes_buf[0 .. n]);
+
+ size_t n_overlaps = 0;
+
+ for (size_t i = 0; i < n - 1; i++) {
+ if (read_name_hashes_buf[i][0] != read_name_hashes_buf[i + 1][0]) {
+ auto idx = read_name_hashes_buf[i][1];
+ if (column.reads[idx].mate_overlap != MateOverlapStatus.none)
+ column.reads[idx].mate_overlap = MateOverlapStatus.past;
+ continue;
+ }
+
+ auto idx1 = read_name_hashes_buf[i][1];
+ auto idx2 = read_name_hashes_buf[i + 1][1];
+
+ if (column.reads[idx1].sample_id == column.reads[idx2].sample_id &&
+ column.reads[idx1].name == column.reads[idx2].name)
+ {
+ if (column.reads[idx1].mate_overlap != MateOverlapStatus.none &&
+ column.reads[idx2].mate_overlap != MateOverlapStatus.none)
+ {
+ assert(column.reads[idx1].mate_overlap == column.reads[idx2].mate_overlap);
+ }
+
+ overlapping_mate_positions_buf[n_overlaps++] = tuple(idx1, idx2);
+
+ // don't touch status if it's already set
+ if (column.reads[idx1].mate_overlap == MateOverlapStatus.none)
+ column.reads[idx1].mate_overlap = MateOverlapStatus.detected;
+
+ if (column.reads[idx2].mate_overlap == MateOverlapStatus.none)
+ column.reads[idx2].mate_overlap = MateOverlapStatus.detected;
+
+ // don't consider rare cases of >= 3 reads with the same name
+ i += 1;
+ }
+ }
+
+ auto idx = read_name_hashes_buf[n - 1][1];
+ if (column.reads[idx].mate_overlap != MateOverlapStatus.none &&
+ ((n == 1) ||
+ (read_name_hashes_buf[n - 2][0] != read_name_hashes_buf[n - 1][0])))
+ column.reads[idx].mate_overlap = MateOverlapStatus.past;
+
+ // store positions of overlapping mates for this column
+ overlapping_mate_positions = overlapping_mate_positions_buf[0 .. n_overlaps];
+ }
+
+ // selects a mate of better quality out of two overlapping candidates
+ auto ref R selectBetterMate(R)(auto ref R m1, auto ref R m2) {
+ if (m1.current_base == '-' || m2.current_base == '-') {
+ // if either one hits an indel, look at the mapping quality
+ return m1.mapping_quality > m2.mapping_quality ? m1 : m2;
+ } else {
+ // otherwise, choose one with higher base quality
+ return m1.current_base_quality > m2.current_base_quality ? m1 : m2;
+ }
+ }
+}
+
+final class PerBasePrinter : ColumnPrinter {
+ NonOverlappingRegionStatsCollector stats_collector;
+ bool report_zero_coverage;
+
+ private {
+ int _prev_ref_id = -2;
+ long _prev_position;
+ bool _bed_is_provided;
+ }
+
+ override void init(ref string[] args) {
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "report-zero-coverage|z", &report_zero_coverage);
+ if (report_zero_coverage)
+ min_cov = 0;
+ if (min_cov == 0)
+ report_zero_coverage = true;
+
+ output_file.write("REF\tPOS\tCOV\tA\tC\tG\tT\tDEL\tREFSKIP");
+ if (!combined)
+ output_file.write("\tSAMPLE");
+ if (annotate)
+ output_file.write("\tFLAG");
+ output_file.writeln();
+ }
+
+ override void setBed(BamRegion[] bed) {
+ super.setBed(bed);
+ _bed_is_provided = true;
+ stats_collector = new NonOverlappingRegionStatsCollector(bed);
+ }
+
+ private string[] tails;
+ private void initTails() {
+ if (!tails.empty) return;
+
+ if (combined) {
+ tails ~= "\t0\t0\t0\t0\t0\t0\t0";
+ if (annotate)
+ tails[0] = tails[0] ~ (min_cov > 0 ? "\tn" : "\ty");
+ } else {
+ foreach (sample_name; sample_names) {
+ tails ~= "\t0\t0\t0\t0\t0\t0\t0\t" ~ sample_name;
+ if (annotate)
+ tails.back = tails.back ~ (min_cov > 0 ? "\tn" : "\ty");
+ }
+ }
+ }
+
+ private void writeEmptyColumns(long ref_id, long start, long end) {
+ if (min_cov > 0 && !annotate)
+ return;
+ auto ref_name = bam.reference_sequences[cast(uint)ref_id].name;
+
+ initTails();
+
+ if (!_bed_is_provided) {
+ foreach (pos; start .. end) {
+ foreach (tail; tails)
+ output_file.writeln(ref_name, '\t', pos, tail);
+ }
+ } else {
+ if (raw_bed.empty || raw_bed.front.ref_id > cast(uint)ref_id)
+ return;
+ while (!raw_bed.empty && raw_bed.front.ref_id < cast(uint)ref_id)
+ raw_bed.popFront();
+ while (!raw_bed.empty && raw_bed.front.ref_id == ref_id) {
+ if (raw_bed.front.fullyLeftOf(cast(uint)ref_id, cast(uint)start)) {
+ raw_bed.popFront();
+ continue;
+ }
+ auto from = max(start, raw_bed.front.start);
+ auto to = min(end, raw_bed.front.end);
+ if (from >= to)
+ break;
+ foreach (pos; from .. to)
+ foreach (tail; tails)
+ output_file.writeln(ref_name, '\t', pos, tail);
+ raw_bed.front.start = cast(uint)to;
+ if (raw_bed.front.start >= raw_bed.front.end)
+ raw_bed.popFront();
+ }
+ stats_collector = new NonOverlappingRegionStatsCollector(raw_bed);
+ }
+ }
+
+ private {
+ size_t[] coverage;
+ size_t[] deletions;
+ size_t[] ref_skips;
+ }
+
+ private void writeColumn(ref Column c) {
+ if (coverage.empty) {
+ deletions.length = max(1, combined ? 1 : sample_names.length);
+ ref_skips.length = deletions.length;
+ coverage.length = 5 * deletions.length;
+ }
+
+ coverage[] = 0;
+ deletions[] = 0;
+ ref_skips[] = 0;
+
+ void processCurrentBase(R)(auto ref R read) {
+ auto sample_id = getSampleId(read);
+ if (read.current_base == '-') {
+ if (read.cigar_operation.type == 'D')
+ deletions[sample_id] += 1;
+ else
+ ref_skips[sample_id] += 1;
+ return;
+ }
+
+ if (read.current_base_quality >= min_base_quality)
+ coverage[5 * sample_id + Base5(read.current_base).internal_code] += 1;
+ }
+
+ detectOverlappingMates(c);
+
+ foreach (read; c.reads) {
+ if (read.mate_overlap == MateOverlapStatus.detected)
+ continue; // process overlapping mates separately
+ else
+ processCurrentBase(read);
+ }
+
+ foreach (pair; overlapping_mate_positions) {
+ auto read = selectBetterMate(c.reads[pair[0]], c.reads[pair[1]]);
+ processCurrentBase(read);
+ }
+
+ foreach (sample_id; 0 .. coverage.length / 5) {
+ auto cov = coverage[sample_id * 5 .. $][0 .. 5];
+ size_t total_coverage = reduce!`a+b`(cov[]) +
+ deletions[sample_id] + ref_skips[sample_id];
+
+ bool ok = total_coverage >= min_cov && total_coverage <= max_cov;
+ if (!ok && !annotate)
+ return;
+
+ output_file.write(bam.reference_sequences[c.ref_id].name, '\t',
+ c.position, '\t', total_coverage);
+ foreach (i; 0 .. 4)
+ output_file.write('\t', cov[i]);
+ output_file.write('\t', deletions[sample_id], '\t', ref_skips[sample_id]);
+
+ if (!combined)
+ output_file.write('\t', getSampleName(sample_id.to!uint));
+
+ if (annotate)
+ output_file.write('\t', ok ? 'y' : 'n');
+ output_file.writeln();
+ }
+ }
+
+ private bool outputRequired(int ref_id, ulong position) {
+ if (stats_collector is null)
+ return true;
+ bool output = false;
+ stats_collector.nextColumn(cast(uint)ref_id, cast(uint)position,
+ (size_t id) { output = true; });
+ return output;
+ }
+
+ override void push(ref Column c) {
+ if (min_cov > 0) {
+ if (outputRequired(c.ref_id, c.position))
+ writeColumn(c);
+ return;
+ }
+
+ if (_prev_ref_id == -2) {
+ foreach (id; 0 .. c.ref_id)
+ writeEmptyColumns(id, 0, bam.reference_sequences[id].length);
+ writeEmptyColumns(c.ref_id, 0, c.position);
+ } else if (_prev_ref_id != c.ref_id) {
+ writeEmptyColumns(_prev_ref_id, _prev_position + 1,
+ bam.reference_sequences[_prev_ref_id].length);
+ writeEmptyColumns(c.ref_id, 0, c.position);
+ } else if (_prev_position != c.position - 1) {
+ writeEmptyColumns(c.ref_id, _prev_position + 1, c.position);
+ }
+
+ _prev_ref_id = c.ref_id;
+ _prev_position = c.position;
+
+ if (outputRequired(c.ref_id, c.position))
+ writeColumn(c);
+ }
+
+ override void close() {
+ if (!report_zero_coverage)
+ return;
+
+ if (_prev_ref_id == -2) {
+ foreach (id; 0 .. bam.reference_sequences.length)
+ writeEmptyColumns(id, 0, bam.reference_sequences[id].length);
+ } else {
+ writeEmptyColumns(_prev_ref_id, _prev_position + 1,
+ bam.reference_sequences[_prev_ref_id].length);
+ foreach (id; _prev_ref_id + 1 .. bam.reference_sequences.length)
+ writeEmptyColumns(id, 0, bam.reference_sequences[id].length);
+ }
+ }
+}
+
+final class PerSampleRegionData {
+ this(size_t n_coverage_counters, size_t n_regions) {
+ coverage_counters_ = new uint[][](n_coverage_counters, n_regions);
+ n_reads_.length = n_regions;
+ n_bases_.length = n_regions;
+ }
+
+ // for each coverage threshold, we hold here numbers of bases with
+ // cov. >= that threshold, for each region
+ private uint[][] coverage_counters_;
+ private uint[] n_reads_; // for each region
+ private uint[] n_bases_; // ditto
+
+ ref uint coverage_count(size_t cov_id, size_t region_id) {
+ return coverage_counters_[cov_id][region_id];
+ }
+
+ ref uint n_reads(size_t id) { return n_reads_[id]; }
+ ref uint n_bases(size_t id) { return n_bases_[id]; }
+
+ void reset(size_t id) {
+ n_reads_[id] = 0;
+ n_bases_[id] = 0;
+ foreach (ref cov_counter; coverage_counters_)
+ cov_counter[id] = 0;
+ }
+}
+
+abstract class PerRegionPrinter : ColumnPrinter {
+ RegionStatsCollector stats_collector;
+ private PerSampleRegionData[] samples;
+
+ static immutable default_bed_fields = ["chrom", "chromStart", "chromEnd"];
+
+ private void printBedHeader(size_t n_before) {
+ output_file.write("# ");
+ foreach (field; default_bed_fields[0 .. min($, n_before)])
+ output_file.write(field, "\t");
+ foreach (k; 3 .. n_before)
+ output_file.write("F", k, "\t");
+ output_file.write("readCount\tmeanCoverage");
+ foreach (cov; cov_thresholds)
+ output_file.write("\tpercentage", cov);
+ if (!combined)
+ output_file.write("\tsampleName");
+
+ if (annotate)
+ output_file.write("\tmeanCovWithinBounds");
+ output_file.write("\n");
+ output_file.flush();
+ }
+
+ private void countRead(R)(auto ref R read, size_t id) {
+ auto n = countOverlappingBases(read, id);
+ auto data = getSampleData(getSampleId(read));
+ data.n_bases(id) += n;
+
+ // count the read only if at least one base is good
+ if (n > 0)
+ data.n_reads(id) += 1;
+ }
+
+ private size_t countOverlappingBases(R)(auto ref R read, size_t id, ulong start_pos=0) {
+ auto sample_id = getSampleId(read);
+ assert(sample_names.empty || sample_id < sample_names.length, "Invalid sample ID");
+ auto data = getSampleData(sample_id);
+
+ auto region = getRegionById(id);
+
+ auto pos = read.position; // current position on the reference
+ auto q = read.base_qualities;
+ size_t n; // number of read bases that are not insertions
+ // and also have good quality
+ foreach (op; read.cigar) {
+ if (op.is_match_or_mismatch)
+ foreach (qual; q[0 .. min(op.length, $)]) {
+ n += region.overlaps(region.ref_id, pos) &&
+ qual >= min_base_quality && pos >= start_pos;
+ ++pos;
+ }
+ else if (op.is_reference_consuming)
+ pos += op.length;
+
+ // min(op.length, $) protects from invalid memory accesses
+ // possible only when the input data is incorrect
+ if (op.is_query_consuming)
+ q = q[min(op.length, $) .. $];
+ }
+ return n;
+ }
+
+ abstract BamRegion getRegionById(size_t id);
+ abstract PerSampleRegionData getSampleData(uint sample_id);
+ abstract bool isFirstOccurrence(size_t id);
+ abstract void markAsSeen(size_t id);
+ abstract void writeOriginalBedLine(size_t id);
+
+ uint[] cov_thresholds;
+ bool[] is_first_occurrence;
+
+ uint[] cov_per_sample;
+
+ override void init(ref string[] args) {
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "cov-threshold|T", &cov_thresholds);
+ }
+
+ private void uncountOverlappingMates(R)(ref R r1, ref R r2, size_t id, ulong curr_pos) {
+ if (r1.mate_overlap == MateOverlapStatus.fixed &&
+ r2.mate_overlap == MateOverlapStatus.fixed)
+ return;
+
+ assert(r1.mate_overlap == MateOverlapStatus.detected);
+ assert(r2.mate_overlap == MateOverlapStatus.detected);
+
+ // re-count all good bases
+ auto n1_full = countOverlappingBases(r1, id);
+ auto n2_full = countOverlappingBases(r2, id);
+
+ // now count bases starting from the current column
+ auto n1 = r1.position == curr_pos ? n1_full : countOverlappingBases(r1, id, curr_pos);
+ auto n2 = r2.position == curr_pos ? n2_full : countOverlappingBases(r2, id, curr_pos);
+
+ auto data = getSampleData(r1.sample_id);
+
+ data.n_bases(id) -= n1 + n2; // this count is then dealt with on per-base basis
+
+ data.n_reads(id) -= (n1_full > 0) + (n2_full > 0);
+ data.n_reads(id) += (n1_full + n2_full > 0); // count only one read instead of two
+
+ // don't set status to fixed just yet, there might be other regions as well
+ }
+
+ private void fixRegionBaseCounter(ref Column column, size_t region_id) {
+ foreach (p; overlapping_mate_positions)
+ uncountOverlappingMates(column.reads[p[0]],
+ column.reads[p[1]], region_id, column.position);
+ }
+
+ private void markOverlappingMatesAsFixed(ref Column column) {
+ foreach (p; overlapping_mate_positions) {
+ assert(column.reads[p[0]].mate_overlap != MateOverlapStatus.past);
+ assert(column.reads[p[1]].mate_overlap != MateOverlapStatus.past);
+ column.reads[p[0]].mate_overlap = MateOverlapStatus.fixed;
+ column.reads[p[1]].mate_overlap = MateOverlapStatus.fixed;
+ }
+ }
+
+ override void push(ref Column column) {
+ uint ref_id = column.ref_id.to!uint;
+ pos_t position = column.position.to!pos_t;
+
+ if (cov_per_sample.length == 0) {
+ cov_per_sample.length = max(1, combined ? 1 : sample_names.length);
+ }
+
+ detectOverlappingMates(column);
+
+ void processCurrentBase(R)(auto ref R read, size_t region_id) {
+ if (read.current_base_quality < min_base_quality)
+ return;
+ auto sample_id = getSampleId(read);
+ auto data = getSampleData(sample_id);
+ data.n_bases(region_id) += 1;
+ cov_per_sample[sample_id] += 1;
+ }
+
+ void countPreviouslySeenMateOverlaps(size_t id) {
+ foreach (pair; overlapping_mate_positions) {
+ auto m1 = column.reads[pair[0]];
+ auto m2 = column.reads[pair[1]];
+ if (m1.mate_overlap != MateOverlapStatus.fixed)
+ continue;
+
+ // don't set n_bases here, only n_reads
+ auto n1 = countOverlappingBases(m1, id);
+ auto n2 = countOverlappingBases(m2, id);
+
+ if (n1 + n2 == 0)
+ continue;
+
+ auto data = getSampleData(m1.sample_id);
+ data.n_reads(id) += 1;
+ }
+ }
+
+ bool fixes_applied = false;
+
+ stats_collector.nextColumn(ref_id, position,
+ (size_t id) {
+ if (isFirstOccurrence(id)) {
+ foreach (read; column.reads)
+ if (read.mate_overlap != MateOverlapStatus.fixed)
+ countRead(read, id);
+ countPreviouslySeenMateOverlaps(id);
+ markAsSeen(id);
+ } else {
+ foreach (read; column.reads_starting_here)
+ countRead(read, id);
+ }
+
+ fixRegionBaseCounter(column, id);
+ fixes_applied = true;
+
+ cov_per_sample[] = 0;
+
+ foreach (ref read; column.reads) {
+ if (read.mate_overlap != MateOverlapStatus.none)
+ {
+ if (read.mate_overlap != MateOverlapStatus.past)
+ continue;
+ processCurrentBase(read, id);
+ } else {
+ if (read.current_base_quality >= min_base_quality)
+ cov_per_sample[getSampleId(read)] += 1;
+ }
+ }
+
+ foreach (pair; overlapping_mate_positions) {
+ auto m1 = column.reads[pair[0]], m2 = column.reads[pair[1]];
+ processCurrentBase(selectBetterMate(m1, m2), id);
+ }
+
+ foreach (sample_id; iota(cov_per_sample.length.to!uint)) {
+ auto data = getSampleData(sample_id);
+ foreach (i, threshold; cov_thresholds)
+ if (cov_per_sample[sample_id] >= threshold)
+ data.coverage_count(i, id) += 1;
+ }
+ });
+
+ if (fixes_applied)
+ markOverlappingMatesAsFixed(column);
+ }
+
+ void printRegionStats(uint sample_id, size_t id, PerSampleRegionData data) {
+ auto region = getRegionById(id);
+ auto length = region.end - region.start;
+ with(output_file) {
+ auto mean_cov = data.n_bases(id).to!float / length;
+
+ bool ok = mean_cov >= this.min_cov && mean_cov <= this.max_cov;
+
+ if (!ok && !this.annotate)
+ return;
+
+ writeOriginalBedLine(id);
+ write(data.n_reads(id), '\t', mean_cov);
+ foreach (j; 0 .. cov_thresholds.length) {
+ auto percentage = data.coverage_count(j, id).to!float * 100 / length;
+ if (cov_thresholds[j] == 0)
+ percentage = 100.0;
+ write('\t', percentage);
+ }
+
+ if (!combined)
+ write('\t', getSampleName(sample_id));
+
+ if (annotate)
+ write('\t', ok ? 'y' : 'n');
+
+ writeln();
+ flush();
+ }
+ }
+}
+
+final class PerBedRegionPrinter : PerRegionPrinter {
+ bool[] is_first_occurrence;
+
+ override PerSampleRegionData getSampleData(uint id) {
+ if (samples.length == 0) {
+ samples.length = max(1, combined ? 1 : sample_names.length);
+ foreach (k; 0 .. samples.length)
+ samples[k] = new PerSampleRegionData(cov_thresholds.length, raw_bed.length);
+ }
+ assert(id < samples.length, "Invalid sample ID: " ~
+ id.to!string ~ "/" ~ samples.length.to!string);
+ assert(samples[id] !is null);
+ return samples[id];
+ }
+
+ override bool isFirstOccurrence(size_t id) {
+ return is_first_occurrence[id];
+ }
+
+ override void markAsSeen(size_t id) {
+ is_first_occurrence[id] = false;
+ }
+
+ override void writeOriginalBedLine(size_t id) {
+ import std.string;
+ raw_bed_lines[id] = std.string.stripRight(raw_bed_lines[id]);
+ output_file.write(raw_bed_lines[id], "\t");
+ }
+
+ override BamRegion getRegionById(size_t id) {
+ return raw_bed[id];
+ }
+
+ override void setBed(BamRegion[] bed) {
+ raw_bed = bed;
+ is_first_occurrence = new bool[](raw_bed.length);
+ is_first_occurrence[] = true;
+
+ if (isSortedAndNonOverlapping(raw_bed))
+ stats_collector = new NonOverlappingRegionStatsCollector(raw_bed);
+ else
+ stats_collector = new GeneralRegionStatsCollector(raw_bed);
+
+ printBedHeader(raw_bed_lines[0].split().length);
+ }
+
+ override void close() {
+ foreach (id; 0 .. raw_bed.length) {
+ foreach (sample_id; iota(samples.length.to!uint))
+ printRegionStats(sample_id, id, getSampleData(sample_id));
+ }
+ }
+}
+
+final class PerWindowPrinter : PerRegionPrinter {
+ size_t window_size;
+ size_t overlap;
+ size_t step;
+ size_t n; // number of windows to keep at each moment
+
+ bool[] is_first_occurrence;
+
+ size_t leftmost_window_index = 0;
+ size_t leftmost_window_start_pos = 0;
+ int window_ref_id = -1;
+ size_t ref_length;
+
+ void printWindowStats(size_t id) {
+ foreach (sample_id; iota(samples.length.to!uint))
+ printRegionStats(sample_id, leftmost_window_index, getSampleData(sample_id));
+ }
+
+ void resetAllWindows() {
+ foreach (data; samples) {
+ foreach (id; 0 .. n) {
+ data.reset(id);
+ }
+ }
+ is_first_occurrence[] = true;
+ leftmost_window_index = 0;
+ leftmost_window_start_pos = 0;
+ }
+
+ void finishLeftMostWindow() {
+ printWindowStats(leftmost_window_index);
+ foreach (sample, data; samples)
+ data.reset(leftmost_window_index);
+ is_first_occurrence[leftmost_window_index] = true;
+
+ leftmost_window_index += 1;
+ if (leftmost_window_index == n)
+ leftmost_window_index = 0;
+ leftmost_window_start_pos += step;
+ }
+
+ size_t windowStart(size_t id) {
+ size_t k_from_leftmost;
+ if (id >= leftmost_window_index) {
+ k_from_leftmost = id - leftmost_window_index;
+ } else {
+ k_from_leftmost = n - leftmost_window_index + id;
+ }
+ return leftmost_window_start_pos + step * k_from_leftmost;
+ }
+
+ override PerSampleRegionData getSampleData(uint id) {
+ if (samples.length == 0) {
+ samples.length = max(1, combined ? 1 : sample_names.length);
+ foreach (k; 0 .. samples.length)
+ samples[k] = new PerSampleRegionData(cov_thresholds.length, n);
+ }
+ return samples[id];
+ }
+
+ override bool isFirstOccurrence(size_t id) {
+ return is_first_occurrence[id];
+ }
+
+ override void markAsSeen(size_t id) {
+ is_first_occurrence[id] = false;
+ }
+
+ override BamRegion getRegionById(size_t id) {
+ auto start = windowStart(id);
+ auto end = start + window_size;
+ return BamRegion(window_ref_id, cast(uint)start, cast(uint)end);
+ }
+
+ override void writeOriginalBedLine(size_t id) {
+ auto region = getRegionById(id);
+ output_file.write(bam.reference_sequences[region.ref_id].name, '\t',
+ region.start, '\t',
+ region.end, '\t');
+ }
+
+ override void init(ref string[] args) {
+ getopt(args, std.getopt.config.caseSensitive,
+ "window-size|w", &window_size,
+ "overlap", &overlap,
+ "cov-threshold|T", &cov_thresholds);
+
+ enforce(window_size > 0,
+ "positive window size must be specified");
+
+ enforce(overlap < window_size,
+ "specified overlap is larger than window size");
+
+ step = window_size - overlap;
+ n = window_size / step;
+ if (window_size % step != 0)
+ ++n;
+
+ is_first_occurrence = new bool[n];
+ is_first_occurrence[] = false;
+
+ stats_collector = new WindowStatsCollector(bam, window_size, overlap, n);
+
+ printBedHeader(3);
+ }
+
+ private void printEmptyWindows(int ref_id) {
+ window_ref_id = ref_id;
+ foreach (j; 0 .. bam.reference_sequences[ref_id].length / step)
+ finishLeftMostWindow();
+ resetAllWindows();
+ }
+
+ private void moveToReference(int ref_id) {
+ window_ref_id = ref_id;
+ ref_length = bam.reference_sequences[ref_id].length;
+ }
+
+ override void push(ref Column column) {
+ if (window_ref_id == -1) {
+ foreach (int k; 0 .. column.ref_id)
+ printEmptyWindows(k);
+ moveToReference(column.ref_id);
+ } else if (column.ref_id != window_ref_id) {
+ while (leftmost_window_start_pos + window_size <= ref_length)
+ finishLeftMostWindow();
+ resetAllWindows();
+ foreach (k; window_ref_id + 1 .. column.ref_id)
+ printEmptyWindows(k);
+ moveToReference(column.ref_id);
+ }
+
+ while (column.position >= leftmost_window_start_pos + window_size)
+ finishLeftMostWindow();
+ super.push(column);
+ }
+
+ override void close() {
+ while (leftmost_window_start_pos + window_size <= ref_length)
+ finishLeftMostWindow();
+ foreach (k; window_ref_id + 1 .. bam.reference_sequences.length)
+ printEmptyWindows(cast(int)k);
+ output_file.close();
+ }
+}
+
+int depth_main(string[] args) {
+
+ int n_threads;
+ string query = null;
+ Filter read_filter = new NullFilter();
+
+ string bed_filename = null;
+
+ if (args.length < 3) {
+ printUsage();
+ return 0;
+ }
+
+ Mode mode;
+ ColumnPrinter printer;
+
+ switch (args[1]) {
+ case "base":
+ mode = Mode.base;
+ printer = new PerBasePrinter();
+ break;
+ case "region":
+ mode = Mode.region;
+ printer = new PerBedRegionPrinter();
+ break;
+ case "window":
+ mode = Mode.window;
+ printer = new PerWindowPrinter();
+ break;
+ default:
+ printUsage();
+ return 0;
+ }
+
+ if (mode == Mode.base)
+ printer.min_cov = 1;
+
+ string output_fn;
+
+ args = args[1 .. $];
+
+ try {
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ std.getopt.config.passThrough,
+ "filter|F", &query,
+ "output-filename|o", &output_fn,
+ "nthreads|t", &n_threads,
+ "min-coverage|c", &printer.min_cov,
+ "max-coverage|C", &printer.max_cov,
+ "min-base-quality|q", &printer.min_base_quality,
+ "annotate|a", &printer.annotate,
+ "combined", &printer.combined,
+ "fix-mate-overlaps|m", &printer.fix_mate_overlaps);
+
+ if (output_fn is null)
+ printer.output_file = stdout;
+ else
+ printer.output_file = File(output_fn, "w+");
+
+ if (mode != Mode.window) {
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ std.getopt.config.passThrough,
+ "regions|L", &bed_filename);
+ }
+
+ if (mode == Mode.region && bed_filename is null) {
+ stderr.writeln("BED file or a region must be provided in region mode");
+ return 1;
+ }
+
+ // handles subcommand arguments and removes them from the list
+ printer.init(args);
+
+ defaultPoolThreads = max(n_threads, 0);
+
+ if (query !is null) {
+ read_filter = createFilterFromQuery(query);
+ } else {
+ read_filter = createFilterFromQuery("mapping_quality > 0 and "
+ "not duplicate and "
+ "not failed_quality_control");
+ }
+
+ auto bam_filenames = args[1 .. $];
+ auto bam = new MultiBamReader(bam_filenames);
+ enforce(bam.header.sorting_order == SortingOrder.coordinate,
+ "All files must be coordinate-sorted");
+ enforce(bam.has_index, "All files must be indexed");
+
+ printer.bam = bam;
+
+ uint[string] sm2id;
+ uint[string] rg2id;
+ foreach (rg; bam.header.read_groups) {
+ if (rg.sample !in sm2id) {
+ sm2id[rg.sample] = printer.sample_names.length.to!uint;
+ printer.sample_names ~= rg.sample;
+ }
+ rg2id[rg.identifier] = sm2id[rg.sample];
+ }
+
+ if (printer.sample_names.empty)
+ printer.sample_names = ["*"];
+
+ InputRange!(CustomBamRead) reads;
+ if (bed_filename !is null) {
+ BamRegion[] bed;
+ try {
+ bed = parseBed(bed_filename, bam);
+ if (mode == Mode.base) {
+ parseBed(bed_filename, bam, true, &printer.raw_bed_lines);
+ printer.setBed(parseBed(bed_filename, bam, true));
+ } else {
+ printer.setBed(parseBed(bed_filename, bam, false, &printer.raw_bed_lines));
+ }
+ } catch (Exception e) {
+ auto region = parseRegion(bed_filename);
+ enforce(bam.hasReference(region.reference),
+ "couldn't open file " ~ bed_filename ~
+ " or find reference " ~ region.reference);
+ auto ref_id = bam[region.reference].id;
+ bed ~= BamRegion(ref_id, region.beg, region.end);
+ if (bed[0].end == uint.max)
+ bed[0].end = bam[region.reference].length;
+ auto s = region.reference ~ "\t" ~
+ bed[0].start.to!string() ~ "\t" ~
+ bed[0].end.to!string();
+ printer.raw_bed_lines = [s];
+ printer.setBed(bed);
+ }
+ reads = inputRangeObject(bam.getReadsOverlapping(bed)
+ .map!(r => CustomBamRead(r, rg2id)));
+ } else {
+ reads = inputRangeObject(bam.reads.map!(r => CustomBamRead(r, rg2id)));
+ }
+
+ auto filtered_reads = inputRangeObject(filtered(reads, read_filter));
+ auto pileup = pileupColumns(filtered_reads);
+
+ int last_ref_id = -2;
+
+ foreach (column; pileup) {
+ auto ref_name = bam.reference_sequences[column.ref_id].name;
+
+ if (column.ref_id != last_ref_id) {
+ last_ref_id = column.ref_id;
+ stderr.writeln("Processing reference #", column.ref_id + 1,
+ " (", ref_name, ")");
+ }
+
+ printer.push(column);
+ }
+
+ printer.close();
+ return 0;
+
+ } catch (Exception e) {
+ stderr.writeln("sambamba-depth: ", e.msg);
+
+ version(development) {
+ throw e;
+ }
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/sambamba/fixbins.d b/sambamba/fixbins.d
new file mode 100644
index 0000000..b8b7f2d
--- /dev/null
+++ b/sambamba/fixbins.d
@@ -0,0 +1,100 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2015 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.fixbins;
+
+import std.stdio, std.getopt, std.parallelism;
+import sambamba.utils.common.progressbar;
+import sambamba.utils.common.overwrite;
+import bio.bam.reader, bio.bam.writer;
+import bio.bam.bai.bin;
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-fixbins [options] <input.bam> <output.bam>");
+ stderr.writeln();
+ stderr.writeln("Options: -t, --nthreads=NTHREADS");
+ stderr.writeln(" maximum number of threads to use");
+ stderr.writeln(" -p, --show-progress");
+ stderr.writeln(" show progressbar in STDERR");
+ stderr.writeln(" -l, --compression-level=LEVEL");
+ stderr.writeln(" specify compression level (from 0 to 9)");
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return fixbins_main(args);
+ }
+}
+
+int fixbins_main(string[] args) {
+ try {
+ int compression_level = -1;
+ size_t nthreads = totalCPUs - 1;
+ bool show_progress;
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "nthreads|t", &nthreads,
+ "compression-level|l", &compression_level,
+ "show-progress|p", &show_progress);
+
+ if (args.length != 3) {
+ printUsage();
+ return 0;
+ }
+
+ protectFromOverwrite(args[1], args[2]);
+
+ auto bam = new BamReader(args[1]);
+ bam.assumeSequentialProcessing();
+ auto w = new BamWriter(args[2], compression_level);
+
+ w.writeSamHeader(bam.header);
+ w.writeReferenceSequenceInfo(bam.reference_sequences);
+
+ void fixBins(R)(R reads) {
+ foreach (r; reads) {
+ auto start = r.position;
+ auto end = start + r.basesCovered();
+ uint correct_bin = cast(uint)reg2bin(start, end);
+ uint* x = cast(uint*)r.raw_data.ptr + 2;
+ *x = (*x & 0xFFFF) | (correct_bin << 16);
+ w.writeRecord(r);
+ }
+ }
+
+ if (show_progress) {
+ auto bar = new shared(ProgressBar)();
+ auto reads = bam.readsWithProgress((lazy float p) { bar.update(p); });
+ fixBins(reads);
+ bar.finish();
+ } else {
+ fixBins(bam.reads);
+ }
+
+ scope(exit) w.finish();
+
+ } catch (Throwable e) {
+ stderr.writeln("sambamba-fixbins: ", e.msg);
+ version(development) { throw e; }
+ return 1;
+ }
+
+ return 0;
+}
+
diff --git a/sambamba/flagstat.d b/sambamba/flagstat.d
new file mode 100644
index 0000000..59ac33b
--- /dev/null
+++ b/sambamba/flagstat.d
@@ -0,0 +1,139 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2013 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.flagstat;
+
+/// port of samtools flagstat tool
+import bio.bam.reader;
+import std.stdio, std.conv, std.parallelism, std.getopt, std.string;
+
+import sambamba.utils.common.progressbar;
+
+ulong[2] reads, pair_all, pair_good, first, second, single, pair_map, mapped,
+ dup, diff_chr, diff_high, secondary, supplementary;
+
+void computeFlagStatistics(R)(R alignments) {
+ foreach (read; alignments) {
+ size_t failed = read.failed_quality_control ? 1 : 0;
+ ++reads[failed];
+ if (!read.is_unmapped) ++mapped[failed];
+ if (read.is_duplicate) ++dup[failed];
+ if (read.is_secondary_alignment) {
+ ++secondary[failed];
+ } else if (read.is_supplementary) {
+ ++supplementary[failed];
+ } else if (read.is_paired) {
+ ++pair_all[failed];
+ if (read.proper_pair && !read.is_unmapped) ++pair_good[failed];
+ if (read.is_first_of_pair) ++first[failed];
+ if (read.is_second_of_pair) ++second[failed];
+ if (read.mate_is_unmapped && !read.is_unmapped) ++single[failed];
+ if (!read.is_unmapped && !read.mate_is_unmapped) {
+ ++pair_map[failed];
+ if (read.ref_id != read.mate_ref_id) {
+ ++diff_chr[failed];
+ if (read.mapping_quality >= 5)
+ ++diff_high[failed];
+ }
+ }
+ }
+ }
+}
+
+void writeParam(string description, ulong[2] param) {
+ writefln("%s + %s %s", param[0], param[1], description);
+}
+
+float percent(ulong a, ulong b) { return to!float(a) / b * 100.0; }
+
+string percentStr(ulong a, ulong b) {
+ if (b == 0) return "N/A";
+ return format("%.2f%%", percent(a, b));
+}
+
+void writeParamWithPercentage(string description, ulong[2] param, ulong[2] total) {
+ writefln("%s + %s %s (%s:%s)", param[0], param[1], description,
+ percentStr(param[0], total[0]),
+ percentStr(param[1], total[1]));
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return flagstat_main(args);
+ }
+}
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-flagstat [options] <input.bam>");
+ stderr.writeln();
+ stderr.writeln("OPTIONS: -t, --nthreads=NTHREADS");
+ stderr.writeln(" use NTHREADS for decompression");
+ stderr.writeln(" -p, --show-progress");
+ stderr.writeln(" show progressbar in STDERR");
+}
+
+int flagstat_main(string[] args) {
+ size_t threads = totalCPUs;
+ bool show_progress;
+
+ try {
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "nthreads|t", &threads,
+ "show-progress|p", &show_progress);
+
+ if (args.length < 2) {
+ printUsage();
+ return 1;
+ }
+
+ auto task_pool = new TaskPool(threads);
+ scope(exit) task_pool.finish();
+
+ auto bam = new BamReader(args[1], task_pool);
+ bam.assumeSequentialProcessing();
+
+ if (show_progress) {
+ auto bar = new shared(ProgressBar)();
+ computeFlagStatistics(bam.readsWithProgress((lazy float p) { bar.update(p); }));
+ bar.finish();
+ } else {
+ computeFlagStatistics(bam.reads!withoutOffsets);
+ }
+
+ scope(exit) {
+ writeParam("in total (QC-passed reads + QC-failed reads)", reads);
+ writeParam("secondary", secondary);
+ writeParam("supplementary", supplementary);
+ writeParam("duplicates", dup);
+ writeParamWithPercentage("mapped", mapped, reads);
+ writeParam("paired in sequencing", pair_all);
+ writeParam("read1", first);
+ writeParam("read2", second);
+ writeParamWithPercentage("properly paired", pair_good, pair_all);
+ writeParam("with itself and mate mapped", pair_map);
+ writeParamWithPercentage("singletons", single, pair_all);
+ writeParam("with mate mapped to a different chr", diff_chr);
+ writeParam("with mate mapped to a different chr (mapQ>=5)", diff_high);
+ }
+ } catch (Throwable e) {
+ stderr.writeln(e.msg);
+ }
+ return 0;
+}
diff --git a/sambamba/index.d b/sambamba/index.d
new file mode 100644
index 0000000..bfc2965
--- /dev/null
+++ b/sambamba/index.d
@@ -0,0 +1,117 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2015 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.index;
+
+import std.stdio;
+import std.stream;
+import std.range;
+import std.parallelism;
+import std.getopt;
+import cram.reader;
+
+import sambamba.utils.common.progressbar;
+
+import bio.bam.bai.indexing;
+import bio.bam.reader;
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-index [OPTIONS] <input.bam|input.cram> [output_file]");
+ stderr.writeln();
+ stderr.writeln("\tCreates index for a BAM or CRAM file");
+ stderr.writeln();
+ stderr.writeln("Options: -t, --nthreads=NTHREADS");
+ stderr.writeln(" number of threads to use for decompression");
+ stderr.writeln(" -p, --show-progress");
+ stderr.writeln(" show progress bar in STDERR");
+ stderr.writeln(" -c, --check-bins");
+ stderr.writeln(" check that bins are set correctly");
+ stderr.writeln(" -C, --cram-input");
+ stderr.writeln(" specify that input is in CRAM format");
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return index_main(args);
+ }
+}
+
+int index_main(string[] args) {
+
+ bool show_progress;
+ bool check_bins;
+ uint n_threads = totalCPUs;
+ bool is_cram;
+ string out_filename = null;
+
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "show-progress|p", &show_progress,
+ "nthreads|t", &n_threads,
+ "check-bins|c", &check_bins,
+ "cram-input|C", &is_cram);
+
+ try {
+ if (args.length < 2 || args.length > 3) {
+ printUsage();
+ return 0;
+ }
+
+ if (!is_cram) {
+ if (args.length > 2)
+ out_filename = args[2];
+ else
+ out_filename = args[1] ~ ".bai";
+
+ // default taskPool uses only totalCPUs-1 threads,
+ // but in case of indexing the most time is spent
+ // on decompression, and it makes perfect sense
+ // to use all available cores for that
+ //
+ // (this is not the case with the sambamba tool where
+ // filtering can consume significant amount of time)
+ auto task_pool = new TaskPool(n_threads);
+ scope(exit) task_pool.finish();
+
+ auto bam = new BamReader(args[1], task_pool);
+ bam.assumeSequentialProcessing();
+ Stream stream = new BufferedFile(out_filename, FileMode.Out);
+ scope(exit) stream.close();
+
+ if (show_progress) {
+ auto bar = new shared(ProgressBar)();
+ createIndex(bam, stream, check_bins, (lazy float p) { bar.update(p); });
+ bar.finish();
+ } else {
+ createIndex(bam, stream, check_bins);
+ }
+ } else {
+ if (show_progress)
+ stderr.writeln("[info] progressbar is unavailable for CRAM input");
+ defaultPoolThreads = 0; // decompression not needed for CRAM
+ auto cram = new CramReader(args[1], taskPool);
+ cram.createIndex(args[$-1]);
+ }
+ } catch (Throwable e) {
+ stderr.writeln("sambamba-index: ", e.msg);
+ version(development) { throw e; }
+ return 1;
+ }
+ return 0;
+}
diff --git a/sambamba/markdup.d b/sambamba/markdup.d
new file mode 100644
index 0000000..028e88a
--- /dev/null
+++ b/sambamba/markdup.d
@@ -0,0 +1,1313 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.markdup;
+
+import std.stdio;
+import std.getopt;
+import std.path : buildPath;
+import sambamba.utils.common.tmpdir;
+import sambamba.utils.common.progressbar;
+import sambamba.utils.common.overwrite;
+import thirdparty.unstablesort;
+import utils.lz4;
+import utils.version_ : addPG;
+
+import bio.bam.reader, bio.bam.readrange, bio.bam.writer, bio.bam.referenceinfo,
+ bio.bam.read, bio.sam.header, bio.bam.abstractreader,
+ bio.bam.multireader;
+import std.traits, std.typecons, std.range, std.algorithm, std.parallelism,
+ std.exception, std.file, std.typetuple, std.conv, std.array, std.bitmanip,
+ std.c.stdlib, std.datetime, std.stream : BufferedFile, FileMode;
+
+/// Read + its index (0-based)
+struct IndexedBamRead {
+ ulong index;
+ BamRead read;
+ alias read this;
+
+ IndexedBamRead dup() @property const {
+ return IndexedBamRead(index, read.dup);
+ }
+}
+
+auto withIndices(R)(R reads) {
+ return reads.zip(sequence!((a,n)=>n)())
+ .map!(t => IndexedBamRead(t[1], t[0]))();
+}
+
+struct ReadPair {
+ IndexedBamRead read1;
+ IndexedBamRead read2;
+}
+
+struct ReadPairOrFragment {
+ IndexedBamRead read1;
+ Nullable!IndexedBamRead read2;
+
+ this(IndexedBamRead r1) {
+ read1 = r1;
+ }
+
+ this(IndexedBamRead r1, IndexedBamRead r2) {
+ read1 = r1;
+ read2 = r2;
+ }
+}
+
+class MallocArray(T) {
+ private {
+ T* _p;
+ size_t _sz;
+ size_t _cur;
+ float _gf;
+ }
+
+ /// call manually!
+ void free() {
+ std.c.stdlib.free(_p);
+ _p = null;
+ }
+
+ this(size_t initial_size=16, float grow_factor=1.5) {
+ enforce(initial_size >= 16);
+ enforce(grow_factor >= 1.2);
+ _p = cast(T*)std.c.stdlib.malloc(initial_size * T.sizeof);
+ _sz = initial_size;
+ _gf = grow_factor;
+ }
+
+ T[] data() @property {
+ return _p[0 .. _cur];
+ }
+
+ size_t capacity() @property const {
+ return _sz;
+ }
+
+ /// sets length to zero without releasing the memory
+ void reset() {
+ _cur = 0;
+ }
+
+ void put(ref T element) {
+ if (_cur < _sz) {
+ _p[_cur++] = element;
+ } else {
+ assert(_cur == _sz);
+ _sz = cast(size_t)(_sz * _gf);
+ _p = cast(T*)std.c.stdlib.realloc(_p, _sz * T.sizeof);
+ _p[_cur++] = element;
+ }
+ }
+
+ void put(T element) {
+ put(element);
+ }
+}
+
+/// 48 bytes; fast access to read group;
+/// also stores precomputed hash.
+struct HReadBlock {
+ IndexedBamRead read;
+ alias read this;
+ alias read get;
+ uint hash;
+ uint _rg_pos;
+ mixin(bitfields!(ushort, "_rg_len", 15,
+ bool, "_is_not_null", 1));
+ bool isNull() @property const { return !_is_not_null; }
+ string read_group() @property const {
+ if (_rg_pos == 0)
+ return "";
+ return cast(string)read.raw_data[_rg_pos .. _rg_pos + _rg_len];
+ }
+ void nullify() {
+ .destroy(read);
+ _is_not_null = false;
+ }
+
+ HReadBlock dup() @property {
+ auto result = this;
+ result.read = read.dup;
+ return result;
+ }
+}
+
+template makeHReadBlock(alias charsHashFunc) {
+ HReadBlock makeHReadBlock(R)(auto ref R read) {
+ HReadBlock r = void;
+ r.read = read;
+ auto rg = cast(ubyte[])getRG(read);
+ if (rg.length > 0) {
+ assert(rg.length <= ushort.max / 2);
+ r._rg_pos = cast(uint)(rg.ptr - read.raw_data.ptr);
+ r._rg_len = cast(ushort)(rg.length);
+ } else {
+ r._rg_pos = 0;
+ }
+ r._is_not_null = true;
+ assert(r.read_group == getRG(r.read));
+ auto h = charsHashFunc(chain(cast(ubyte[])r.name,
+ cast(ubyte[])r.read_group));
+ r.hash = h & 0xFFFFFFFF;
+ return r;
+ }
+}
+
+private string getRG(R)(auto ref R r) {
+ static if (is(R == HReadBlock)) {
+ assert(r.read_group == getRG(r.read));
+ return r.read_group;
+ } else {
+ auto v = r["RG"];
+ if (v.is_nothing)
+ return "";
+ return *(cast(string*)(&v));
+ }
+}
+
+bool compareReadNamesAndReadGroups(R1, R2)(auto ref R1 r1, auto ref R2 r2) {
+ auto name_cmp_result = std.algorithm.cmp(r1.name, r2.name);
+ if (name_cmp_result < 0)
+ return true;
+ if (name_cmp_result > 0)
+ return false;
+ return getRG(r1) < getRG(r2);
+}
+
+// LDC doesn't like lambdas :-(
+auto _rse2brb(T)(T t) { return IndexedBamRead(t[1], t[0]); }
+auto _rse2rs(T)(T t) { return map!_rse2brb(zip(t[0].reads, t[1])); }
+auto _rse2r(BamReader[] r, SimpleReader!(ulong, std.stdio.File)[] s) {
+ return map!_rse2rs(zip(r, s)).array()
+ .nWayUnion!compareReadNamesAndReadGroups();
+}
+
+private auto readsFromTempFiles(size_t buf_size, string[] tmp_filenames,
+ TaskPool pool) {
+ BamReader[] readers;
+ SimpleReader!(ulong, std.stdio.File)[] indices;
+ foreach (fn; tmp_filenames) {
+ readers ~= new BamReader(fn, pool);
+ indices ~= new SimpleReader!(ulong, std.stdio.File)(fn ~ ".idx");
+ readers[$ - 1].setBufferSize(buf_size / tmp_filenames.length);
+ }
+
+ return _rse2r(readers, indices);
+}
+
+struct CollateReadPairRange(R, bool keepFragments, alias charsHashFunc)
+ if (isInputRange!R && is(Unqual!(ElementType!R) == IndexedBamRead))
+{
+ private {
+ static auto wrapper(R reads, TaskPool pool) {
+ auto r1 = reads.filter!q{ a.ref_id != -1 }
+ .filter!q{ !a.is_unmapped }
+ .filter!q{ !a.is_secondary_alignment }
+ .filter!q{ !a.is_supplementary };
+
+ static if (keepFragments) {
+ auto r2 = r1;
+ } else {
+ auto r2 = r1.filter!q{a.is_paired && !a.mate_is_unmapped}();
+ }
+
+ return pool.map!(makeHReadBlock!charsHashFunc)(r2, 1024);
+ }
+
+ ReturnType!wrapper _reads;
+ TaskPool _task_pool;
+
+ alias IndexedBamRead Read;
+
+ HReadBlock[] _table; // size is always power of two
+ size_t _table_mask;
+
+ ulong _min_idx, _max_idx;
+
+ version(profile) {
+ size_t _duped_during_compaction;
+ StopWatch _compact_sw;
+ }
+
+ void _compact() {
+ enum max_diff = 2_000UL;
+ if (_max_idx - _min_idx < max_diff * 6)
+ return;
+
+ version(profile) { _compact_sw.start(); scope(exit) _compact_sw.stop(); }
+
+ _min_idx = _max_idx;
+ foreach (ref r; _table)
+ if (!r.isNull && r.is_slice_backed
+ && _max_idx - r.index > max_diff)
+ {
+ version(profile) ++_duped_during_compaction;
+ r = r.dup;
+ } else if (!r.isNull && r.is_slice_backed) {
+ _min_idx = min(_min_idx, r.index);
+ }
+ }
+
+ version(profile) {
+ ~this() {
+ stderr.writeln("duped during compaction: ", _duped_during_compaction);
+ stderr.writeln("time spent on compaction: ", _compact_sw.peek().msecs, " ms");
+ }
+ }
+
+ HReadBlock[] _overflow_list;
+ size_t _stored_in_overflow_list; // current number of elements
+ size_t _overflow_list_cur_pos; // for finishing current list
+ HReadBlock _process_after_dumping;
+
+ enum Source { hashTable, overflowList, tempFiles, none }
+ Source _src;
+
+ IBamSamReader _reader;
+
+ static if (keepFragments)
+ alias ReadPairOrFragment FrontType;
+ else
+ alias ReadPair FrontType;
+ FrontType _front;
+
+ string _tmp_dir;
+ string[] _tmp_filenames;
+ BamWriter _tmp_w;
+ size_t _tmp_written;
+
+ std.stdio.File _tmp_w_idx;
+ MallocArray!ulong _tmp_idx;
+
+ Nullable!Read _tmp_r1;
+ ReturnType!readsFromTempFiles _tmp_reads;
+ }
+
+ this(R reads, ubyte table_size_log2, size_t overflow_list_size,
+ string tmp_dir, TaskPool task_pool = taskPool)
+ {
+ enforce(overflow_list_size > 0);
+ _tmp_dir = tmp_dir;
+
+ _reads = wrapper(reads, task_pool);
+ _task_pool = task_pool;
+ setSource(Source.hashTable);
+
+ _table = new HReadBlock[1 << table_size_log2];
+ _table_mask = (1 << table_size_log2) - 1;
+ _overflow_list = new HReadBlock[overflow_list_size];
+
+ _tmp_idx = new MallocArray!ulong(8192);
+
+ popFront();
+ }
+
+ bool empty() const { return _src == Source.none; }
+
+ auto front() { return _front; }
+
+ void popFront() {
+ final switch (_src) {
+ case Source.hashTable: popFrontHashTable(); return;
+ case Source.overflowList: popFrontOverflowList(); return;
+ case Source.tempFiles: popFrontTempFiles(); return;
+ case Source.none: assert(false);
+ }
+ }
+
+ private:
+ void setSource(Source source) {
+ _src = source;
+ }
+
+ auto next(R)(ref R range) {
+ auto r = range.front;
+ range.popFront();
+ if (_src == Source.tempFiles)
+ r.associateWithReader(_reader);
+ return r;
+ }
+
+ static bool readsArePaired(R1, R2)(auto ref R1 r1, auto ref R2 r2) {
+ return r1.name == r2.name && getRG(r1) == getRG(r2);
+ }
+
+ size_t computeHash(ref HReadBlock r) {
+ return r.hash & _table_mask;
+ }
+
+ void copyToOverflowList(ref HReadBlock r) {
+ auto old = r.is_slice_backed ? r.dup : r;
+ _overflow_list[_stored_in_overflow_list++] = old;
+ }
+
+ void updateHashTableEntry(size_t position, ref HReadBlock read) {
+ _max_idx = max(_max_idx, read.index);
+ _table[position] = read;
+ }
+
+ void removeHashTableEntry(size_t position) {
+ _table[position].nullify();
+ }
+
+ void createTmpWriter() {
+ if (_reader is null) {
+ _tmp_w = null;
+ return;
+ }
+
+ _tmp_filenames ~= _tmp_dir ~ "/sorted." ~
+ _tmp_filenames.length.to!string() ~ ".bam";
+ _tmp_w = new BamWriter(_tmp_filenames[$ - 1], 1, _task_pool);
+ _tmp_w_idx = std.stdio.File(_tmp_filenames[$ - 1] ~ ".idx", "w+");
+ _tmp_w.disableAutoIndexCreation();
+ _tmp_w.writeSamHeader(_reader.header);
+ _tmp_w.writeReferenceSequenceInfo(_reader.reference_sequences);
+ _tmp_written = 0;
+ }
+
+ void closeTmpWriter() {
+ if (_tmp_w !is null)
+ _tmp_w.finish();
+ if (_tmp_filenames.length > 0) {
+ _tmp_w_idx.rawWrite(_tmp_idx.data);
+ _tmp_w_idx.close();
+ }
+ _tmp_idx.reset();
+ }
+
+ void dumpTmpRecord(R)(auto ref R read) {
+ assert(_tmp_w !is null);
+ _tmp_w.writeRecord(read);
+ _tmp_written++;
+ _tmp_idx.put(read.index);
+ if (_tmp_idx.data.length == _tmp_idx.capacity) {
+ _tmp_w_idx.rawWrite(_tmp_idx.data);
+ _tmp_idx.reset();
+ }
+ }
+
+ void popFrontHashTable() {
+ while (!_reads.empty) {
+ _compact();
+ auto read = next(_reads);
+
+ if (_reader is null) {
+ _reader = read.reader;
+ }
+
+ static if (keepFragments) {
+ if (!read.is_paired || read.mate_is_unmapped) {
+ _front = FrontType(read);
+ return;
+ }
+ }
+
+ auto h = computeHash(read);
+ if (_table[h].isNull) {
+ updateHashTableEntry(h, read);
+ } else if (readsArePaired(_table[h], read)) {
+ _front = FrontType(_table[h], read);
+ removeHashTableEntry(h);
+ return;
+ } else if (_stored_in_overflow_list < _overflow_list.length) {
+ copyToOverflowList(_table[h]);
+ updateHashTableEntry(h, read);
+ } else {
+ _process_after_dumping = read.dup;
+ sort!compareReadNamesAndReadGroups(_overflow_list[]);
+ createTmpWriter();
+ _overflow_list_cur_pos = 0;
+ setSource(Source.overflowList);
+ popFrontOverflowList();
+ return;
+ }
+ }
+
+ auto remaining_reads = _table.filter!"!a.isNull"
+ .array().sort!compareReadNamesAndReadGroups();
+ createTmpWriter();
+ foreach (r; remaining_reads)
+ dumpTmpRecord(r);
+ closeTmpWriter();
+
+ if (_stored_in_overflow_list > 0) {
+ createTmpWriter();
+ auto list = _overflow_list[0 .. _stored_in_overflow_list];
+ sort!compareReadNamesAndReadGroups(list);
+ foreach (r; list) dumpTmpRecord(r);
+ closeTmpWriter();
+ }
+
+ _table = null;
+ _overflow_list = null;
+
+ // FIXME: constant!
+ _tmp_reads = readsFromTempFiles(128_000_000, _tmp_filenames, _task_pool);
+ setSource(Source.tempFiles);
+ if (!_tmp_reads.empty)
+ _tmp_r1 = next(_tmp_reads);
+ popFrontTempFiles();
+ }
+
+ void popFrontOverflowList() {
+ while (_overflow_list_cur_pos < _stored_in_overflow_list - 1) {
+ auto r1 = _overflow_list[_overflow_list_cur_pos];
+ auto r2 = _overflow_list[_overflow_list_cur_pos + 1];
+ if (readsArePaired(r1, r2)) {
+ _overflow_list_cur_pos += 2;
+ _front = FrontType(r1, r2);
+ return;
+ } else {
+ dumpTmpRecord(_overflow_list[_overflow_list_cur_pos++]);
+ }
+ }
+
+ if (_overflow_list_cur_pos < _stored_in_overflow_list)
+ dumpTmpRecord(_overflow_list[_overflow_list_cur_pos]);
+ closeTmpWriter();
+
+ _stored_in_overflow_list = 0;
+ if (!_process_after_dumping.isNull) {
+ auto h = computeHash(_process_after_dumping);
+ copyToOverflowList(_table[h]);
+ updateHashTableEntry(h, _process_after_dumping);
+ _process_after_dumping.nullify();
+ }
+
+ setSource(Source.hashTable);
+ popFrontHashTable();
+ }
+
+ void popFrontTempFiles() {
+ while (!_tmp_reads.empty) {
+ auto r2 = next(_tmp_reads);
+ if (readsArePaired(_tmp_r1, r2)) {
+ _front = FrontType(_tmp_r1, r2);
+ if (!_tmp_reads.empty)
+ _tmp_r1 = next(_tmp_reads);
+ else
+ _tmp_r1.nullify();
+ return;
+ } else {
+ static if (keepFragments) {
+ _front = FrontType(_tmp_r1);
+ _tmp_r1 = r2;
+ return;
+ } else {
+ _tmp_r1 = r2;
+ }
+ }
+ }
+
+ if (!_tmp_r1.isNull) {
+ _front = FrontType(_tmp_r1);
+ _tmp_r1.nullify();
+ return;
+ }
+
+ foreach (fn; _tmp_filenames) {
+ std.file.remove(fn);
+ std.file.remove(fn ~ ".idx");
+ }
+ setSource(Source.none);
+ }
+}
+
+auto simpleHash(R)(R chars)
+if (isInputRange!R && is(ElementType!R == ubyte))
+{
+ hash_t h = 0;
+ foreach (ubyte c; chars) {
+ h += c;
+ h *= 37;
+ }
+ return h;
+}
+
+auto readPairs(alias hashFunc=simpleHash, R)
+(R reads, ubyte table_size_log2, size_t overflow_list_size,
+ string tmp_dir, TaskPool task_pool=taskPool) {
+ return CollateReadPairRange!(R, false, hashFunc)
+ (reads, table_size_log2, overflow_list_size, tmp_dir, task_pool);
+}
+
+auto readPairsAndFragments(alias hashFunc=simpleHash, R)
+(R reads, ubyte table_size_log2, size_t overflow_list_size,
+ string tmp_dir, TaskPool task_pool=taskPool) {
+ return CollateReadPairRange!(R, true, hashFunc)
+ (reads, table_size_log2, overflow_list_size, tmp_dir, task_pool);
+}
+
+/////////////////////////////////////////////////////////////////////////////////
+/// no more than 32767 libraries and 16383 reference sequences are supported ////
+/////////////////////////////////////////////////////////////////////////////////
+
+// 8 bytes
+struct SingleEndBasicInfo {
+ mixin(bitfields!(short, "library_id", 16,
+ ushort, "ref_id", 14,
+ ubyte, "reversed", 1,
+ ubyte, "paired", 1));
+ int coord;
+
+ bool samePosition(SingleEndBasicInfo other) const {
+ return coord == other.coord && ref_id == other.ref_id &&
+ reversed == other.reversed && library_id == other.library_id;
+ }
+}
+static assert(SingleEndBasicInfo.sizeof == 8);
+
+// 24 bytes :-(
+struct SingleEndInfo {
+ SingleEndBasicInfo basic_info;
+ alias basic_info this;
+ ulong idx;
+ ushort score;
+}
+
+// 32 bytes
+struct PairedEndsInfo {
+ mixin(bitfields!(short, "library_id", 16,
+ ushort, "ref_id1", 14,
+ ubyte, "reversed1", 1,
+ ubyte, "reversed2", 1));
+ int coord1;
+ int coord2;
+ ushort ref_id2;
+
+ ushort score; // sum of base qualities that are >= 15
+ ulong idx1, idx2;
+
+ SingleEndBasicInfo read1_basic_info() @property {
+ typeof(return) result = void;
+ // HACK! HACK! HACK! use the fact that the structures are almost
+ // the same except the one bit meaning 'paired' instead of 'reversed2'.
+ auto p = cast(ubyte*)(&result);
+ p[0 .. 8] = (cast(ubyte*)(&this))[0 .. 8];
+ result.paired = true;
+ return result;
+ }
+}
+
+static assert(PairedEndsInfo.sizeof == 32);
+
+bool singleEndInfoComparator(S1, S2)(auto ref S1 s1, auto ref S2 s2) {
+ if (s1.library_id < s2.library_id) return true;
+ if (s1.library_id > s2.library_id) return false;
+ if (s1.ref_id < s2.ref_id) return true;
+ if (s1.ref_id > s2.ref_id) return false;
+ if (s1.coord < s2.coord) return true;
+ if (s1.coord > s2.coord) return false;
+ if (s1.reversed < s2.reversed) return true;
+ return false;
+}
+
+bool pairedEndsInfoComparator(P1, P2)(auto ref P1 p1, auto ref P2 p2) {
+ if (p1.library_id < p2.library_id) return true;
+ if (p1.library_id > p2.library_id) return false;
+ if (p1.ref_id1 < p2.ref_id1) return true;
+ if (p1.ref_id1 > p2.ref_id1) return false;
+ if (p1.coord1 < p2.coord1) return true;
+ if (p1.coord1 > p2.coord1) return false;
+ if (p1.reversed1 < p2.reversed1) return true;
+ if (p1.reversed1 > p2.reversed1) return false;
+ if (p1.reversed2 < p2.reversed2) return true;
+ if (p1.reversed2 > p2.reversed2) return false;
+ if (p1.ref_id2 < p2.ref_id2) return true;
+ if (p1.ref_id2 > p2.ref_id2) return false;
+ if (p1.coord2 < p2.coord2) return true;
+ return false;
+}
+
+struct MarkDuplicatesConfig {
+ ubyte hash_table_size_log2 = 18;
+ size_t overflow_list_size = 200_000;
+ string tmpdir;
+ size_t bufsize = 500_000_000; // for sorting storage
+
+ // called on each group of PE duplicates
+ void delegate(PairedEndsInfo[]) pe_callback = null;
+
+ // called on each group of SE duplicates;
+ // the second argument tells if there is a paired read at that position
+ void delegate(SingleEndInfo[], bool) se_callback = null;
+}
+
+private /* algorithm */ {
+
+class ReadGroupIndex {
+ private {
+ int[string] _rg_ids;
+ int[] _rg_id_to_lb_id;
+ }
+
+ this(SamHeader header) {
+ int[string] libraries;
+ _rg_id_to_lb_id.length = header.read_groups.length;
+ int i = 0;
+ int n_libs = 0;
+ foreach (rg; header.read_groups) {
+ _rg_ids[rg.identifier] = i;
+ if (rg.library in libraries) {
+ _rg_id_to_lb_id[i] = libraries[rg.library];
+ } else {
+ _rg_id_to_lb_id[i] = n_libs;
+ libraries[rg.library] = n_libs;
+ ++n_libs;
+ }
+ ++i;
+ }
+ enforce(n_libs <= 32767, "More than 32767 libraries are unsupported");
+ }
+
+ /// -1 if read group with such name is not found in the header
+ int getId(string name) const {
+ auto p = name in _rg_ids;
+ if (p is null)
+ return -1;
+ return *p;
+ }
+
+ int getLibraryId(int read_group_id) const {
+ if (read_group_id == -1)
+ return -1;
+ return _rg_id_to_lb_id[read_group_id];
+ }
+}
+
+int computeFivePrimeCoord(R)(auto ref R read) {
+ if (!read.is_reverse_strand) {
+ auto ops = read.cigar.until!q{ !a.is_clipping };
+ return read.position - reduce!q{ a + b }(0, ops.map!q{ a.length });
+ } else {
+ auto ops = read.cigar.retro.until!q{ !a.is_clipping };
+ auto clipped = reduce!q{ a + b }(0, ops.map!q{ a.length });
+ return read.position + read.basesCovered() + clipped;
+ }
+}
+
+ushort computeScore(R)(auto ref R read) {
+ return reduce!"a + b"(0, read.base_qualities.filter!"a >= 15").to!ushort;
+}
+
+auto collectSingleEndInfo(IndexedBamRead read, ReadGroupIndex read_group_index) {
+ assert(read.ref_id != -1);
+
+ SingleEndInfo result = void;
+ result.coord = computeFivePrimeCoord(read);
+ result.idx = read.index;
+ result.score = computeScore(read);
+ result.ref_id = cast(ushort)read.ref_id;
+ result.reversed = read.is_reverse_strand ? 1 : 0;
+ result.paired = (read.is_paired && !read.mate_is_unmapped) ? 1 : 0;
+
+ auto rg = read_group_index.getId(getRG(read));
+ result.library_id = cast(short)read_group_index.getLibraryId(rg);
+ return result;
+}
+
+// may swap the two arguments
+PairedEndsInfo combine(ref SingleEndInfo s1, ref SingleEndInfo s2) {
+ assert(s1.library_id == s2.library_id);
+ assert(s1.paired && s2.paired);
+
+ if ((s2.ref_id < s1.ref_id) ||
+ ((s2.ref_id == s1.ref_id) &&
+ ((s2.coord < s1.coord) ||
+ (s2.coord == s1.coord && s2.reversed < s1.reversed))))
+ swap(s1, s2);
+
+ PairedEndsInfo result = void;
+ result.library_id = s1.library_id;
+ result.ref_id1 = s1.ref_id;
+ result.ref_id2 = s2.ref_id;
+ result.reversed1 = s1.reversed;
+ result.reversed2 = s2.reversed;
+ result.coord1 = s1.coord;
+ result.coord2 = s2.coord;
+ result.score = cast(ushort)(s1.score + s2.score);
+ result.idx1 = s1.idx;
+ result.idx2 = s2.idx;
+ return result;
+}
+
+// helpers for $(D samePosition)
+SingleEndBasicInfo basicInfo(E)(auto ref E e) {
+ static if (is(E == SingleEndBasicInfo))
+ return e;
+ else static if (is(E == SingleEndInfo))
+ return e.basic_info;
+ else static if (is(E == PairedEndsInfo))
+ return e.read1_basic_info;
+}
+
+bool samePosition(E1, E2)(auto ref E1 e1, auto ref E2 e2) {
+ static if (is(E1 == PairedEndsInfo) && is(E2 == PairedEndsInfo)) {
+ return *cast(ulong*)(&e1) == *cast(ulong*)(&e2) &&
+ e1.ref_id2 == e2.ref_id2 && e1.coord2 == e2.coord2;
+ } else {
+ return basicInfo(e1).samePosition(basicInfo(e2));
+ }
+}
+
+bool positionLessOrEq(E1, E2)(auto ref E1 e1, auto ref E2 e2) {
+ return !singleEndInfoComparator(basicInfo(e2), basicInfo(e1));
+}
+
+bool positionLess(E1, E2)(auto ref E1 e1, auto ref E2 e2) {
+ return !positionLessOrEq(e2, e1);
+}
+
+class SortedStorage(T, alias Cmp="a<b") {
+ private {
+ string _tmp_dir, _salt;
+ string[] _filenames;
+ MallocArray!T _buffer;
+ TaskPool _pool;
+ size_t _length;
+ }
+
+ this(string tmp_dir, TaskPool pool, size_t max_memory_usage) {
+ _buffer = new MallocArray!T(max_memory_usage / T.sizeof);
+ _tmp_dir = tmp_dir;
+ _pool = pool;
+
+ import std.file : dirEntries, SpanMode;
+ _filenames = dirEntries(tmp_dir, T.stringof ~ "*",
+ SpanMode.shallow).map!(a => a.name).array;
+ if (!_filenames.empty) { // this if-branch is for debug purposes only
+ _salt = _filenames[0][T.stringof.length .. $][0 .. 4];
+ } else {
+ import std.random;
+ char[4] tmp;
+ auto gen = Random(unpredictableSeed);
+ foreach (ref c; tmp[]) c = uniform!"[]"('a', 'z', gen);
+ _salt = tmp[].idup;
+ }
+ }
+
+ void put(T item) {
+ if (_buffer.capacity == _buffer.data.length)
+ flush();
+ _buffer.put(item);
+ ++_length;
+ }
+
+ size_t length() @property const {
+ return _length;
+ }
+
+ void flush() {
+ if (_buffer.data.length == 0)
+ return;
+
+ unstableSort!Cmp(_buffer.data, _pool);
+
+ auto fn = buildPath(_tmp_dir, T.stringof ~ _salt ~
+ _filenames.length.to!string);
+
+ auto compressor = new LZ4Compressor();
+ auto lz4_output = std.stdio.File(fn, "w+");
+ compressor.compress(cast(ubyte[])_buffer.data, lz4_output, 1);
+ lz4_output.close();
+
+ _filenames ~= fn;
+ _buffer.reset();
+ }
+
+ void close(bool remove_files=false) {
+ flush();
+ _buffer.free();
+
+ if (remove_files)
+ removeTemporaryFiles();
+ }
+
+ void removeTemporaryFiles() {
+ foreach (fn; _filenames)
+ std.file.remove(fn);
+ }
+
+ auto reader() {
+ SimpleReader!(T, LZ4File)[] readers;
+ foreach (fn; _filenames)
+ readers ~= new SimpleReader!(T, LZ4File)(fn);
+ return nWayUnion!Cmp(readers);
+ }
+}
+
+class SimpleReader(T, U) {
+ this(string filename) {
+ _file = U(filename);
+ _buf = new ubyte[T.sizeof * 1024];
+ popFront();
+ }
+
+ private {
+ U _file;
+ T _front;
+ bool _empty;
+ ubyte[] _buf;
+ ubyte[] _raw_data;
+ }
+
+ bool empty() @property const { return _empty; }
+ T front() @property const { return _front; }
+
+ void popFront() {
+ import std.algorithm : copy;
+
+ while (_raw_data.length < T.sizeof) {
+ auto remaining = _raw_data.length;
+ copy(_raw_data[], _buf[0 .. remaining]);
+ _raw_data = _file.rawRead(_buf[remaining .. $]);
+ _raw_data = _buf[0 .. remaining + _raw_data.length];
+
+ if (_raw_data.length == 0) {
+ _empty = true;
+ _file.close();
+ return;
+ }
+ }
+ _front = *(cast(T*)_raw_data.ptr);
+ _raw_data = _raw_data[T.sizeof .. $];
+ }
+}
+
+alias PEStorage = SortedStorage!(PairedEndsInfo, pairedEndsInfoComparator);
+alias SEStorage = SortedStorage!(SingleEndInfo, singleEndInfoComparator);
+alias SEBStorage = SortedStorage!(SingleEndBasicInfo, singleEndInfoComparator);
+
+auto collectDuplicates(PEStorage pe_storage,
+ SEStorage se_storage,
+ SEBStorage pos_storage,
+ MarkDuplicatesConfig cfg,
+ TaskPool pool)
+{
+ auto pe_tmp = new MallocArray!PairedEndsInfo();
+ auto se_tmp = new MallocArray!SingleEndInfo();
+
+ auto pe = pe_storage.reader;
+ auto se = se_storage.reader;
+ auto pos = pos_storage.reader;
+
+ auto duplicate_indices = new SortedStorage!ulong(cfg.tmpdir, pool, cfg.bufsize);
+
+ while (true) {
+ // sort of three-way merge
+
+ // number of elements processed at the current position
+ size_t pe_proc;
+ size_t se_proc;
+
+ pe_tmp.reset(); se_tmp.reset();
+
+ // process paired ends
+ if (!pe.empty && (se.empty || positionLessOrEq(pe.front, se.front))) {
+ // this is essentially group-by operation,
+ // but maximum score is computed on the fly for efficiency
+ pe_tmp.put(pe.front);
+ pe.popFront();
+ size_t k = 1;
+ size_t best_k = 0;
+ while (!pe.empty) {
+ if (!samePosition(pe.front, pe_tmp.data[0]))
+ break;
+ if (pe.front.score > pe_tmp.data[best_k].score)
+ best_k = k;
+ pe_tmp.put(pe.front);
+ pe.popFront();
+ ++k;
+ }
+
+ if (cfg.pe_callback !is null)
+ cfg.pe_callback(pe_tmp.data);
+
+ for (size_t i = 0; i < k; ++i) {
+ if (i != best_k) {
+ auto paired_ends = pe_tmp.data[i];
+ duplicate_indices.put(paired_ends.idx1);
+ duplicate_indices.put(paired_ends.idx2);
+ }
+ }
+
+ pe_proc = k;
+ }
+
+ // process single ends
+ if (!se.empty && (pe_tmp.data.empty || positionLessOrEq(se.front, pe_tmp.data[0]))) {
+ while (!pos.empty && positionLess(pos.front, se.front))
+ pos.popFront();
+
+ bool seen_paired_read = false;
+ bool seen_fragment = false;
+
+ auto cur = se.front;
+ size_t k = 0;
+ while (!se.empty) {
+ if (!samePosition(se.front, cur))
+ break;
+ if (se.front.paired)
+ seen_paired_read = true;
+ else
+ seen_fragment = true;
+ se_tmp.put(se.front); ++k;
+ se.popFront();
+ }
+
+ size_t k_pe, k_pos;
+ while (k_pe < pe_tmp.data.length && samePosition(pe_tmp.data[k_pe], cur)) {
+ ++k_pe;
+ }
+ while (!pos.empty && samePosition(pos.front, cur)) {
+ ++k_pos;
+ pos.popFront();
+ }
+
+ if (k_pe + k_pos > 0)
+ seen_paired_read = true;
+
+ size_t total = k + k_pe + k_pos;
+
+ if (cfg.se_callback !is null)
+ cfg.se_callback(se_tmp.data, seen_paired_read);
+
+ if (total < 2 || !seen_fragment) { /* do nothing */ }
+ else if (seen_paired_read) {
+ // there was a paired read at this position
+ // => mark all single reads as duplicates
+ for (size_t i = 0; i < k; ++i)
+ if (!se_tmp.data[i].paired)
+ duplicate_indices.put(se_tmp.data[i].idx);
+ } else {
+ size_t best_i = 0;
+ for (size_t i = 0; i < k; ++i) {
+ if (se_tmp.data[i].score > se_tmp.data[best_i].score)
+ best_i = i;
+ }
+ for (size_t i = 0; i < k; ++i) {
+ if (i != best_i)
+ duplicate_indices.put(se_tmp.data[i].idx);
+ }
+ }
+ se_proc = k;
+ }
+
+ if (se.empty && pe.empty) {
+ break;
+ }
+
+ assert(pe_proc + se_proc > 0);
+ }
+
+ pe_tmp.free();
+ se_tmp.free();
+
+ duplicate_indices.close();
+ return duplicate_indices;
+}
+
+auto getDuplicateOffsets(R)(R reads, ReadGroupIndex rg_index,
+ TaskPool pool, MarkDuplicatesConfig cfg) {
+
+ auto single_ends = new SEStorage(cfg.tmpdir, pool, cfg.bufsize);
+ auto paired_ends = new PEStorage(cfg.tmpdir, pool, cfg.bufsize);
+ auto second_ends = new SEBStorage(cfg.tmpdir, pool, cfg.bufsize);
+
+ scope(failure) {
+ paired_ends.close(true);
+ single_ends.close(true);
+ second_ends.close(true);
+ }
+
+ size_t unmatched_pairs;
+
+ foreach (pf; readPairsAndFragments(reads,
+ cfg.hash_table_size_log2,
+ cfg.overflow_list_size,
+ cfg.tmpdir, pool)) {
+ auto end1 = collectSingleEndInfo(pf.read1, rg_index);
+ if (!pf.read2.isNull) {
+ auto end2 = collectSingleEndInfo(pf.read2, rg_index);
+ auto pair = combine(end1, end2);
+ paired_ends.put(pair);
+ second_ends.put(end2.basic_info);
+ } else {
+ if (end1.paired)
+ ++unmatched_pairs;
+ single_ends.put(end1);
+ }
+ }
+
+ paired_ends.flush();
+ single_ends.flush();
+ second_ends.flush();
+
+ stderr.writeln(" sorted ", paired_ends.length, " end pairs");
+
+ stderr.writeln(" and ", single_ends.length, " single ends",
+ " (among them ", unmatched_pairs, " unmatched pairs)");
+
+ StopWatch sw;
+ stderr.write(" collecting indices of duplicate reads... ");
+ sw.start();
+ auto duplicates = collectDuplicates(paired_ends, single_ends, second_ends, cfg, pool);
+ sw.stop(); stderr.writeln(" done in ", sw.peek().msecs, " ms"); sw.reset();
+ stderr.writeln(" found ", duplicates.length, " duplicates");
+
+ paired_ends.removeTemporaryFiles();
+ single_ends.removeTemporaryFiles();
+ second_ends.removeTemporaryFiles();
+
+ return duplicates;
+}
+
+} /* end of algorithm */
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-markdup [options] <input.bam> [<input2.bam> [...]] <output.bam>");
+ stderr.writeln(" By default, marks the duplicates without removing them");
+ stderr.writeln();
+ stderr.writeln("Options: -r, --remove-duplicates");
+ stderr.writeln(" remove duplicates instead of just marking them");
+ stderr.writeln(" -t, --nthreads=NTHREADS");
+ stderr.writeln(" number of threads to use");
+ stderr.writeln(" -l, --compression-level=N");
+ stderr.writeln(" specify compression level of the resulting file (from 0 to 9)");
+ stderr.writeln(" -p, --show-progress");
+ stderr.writeln(" show progressbar in STDERR");
+ stderr.writeln(" --tmpdir=TMPDIR");
+ stderr.writeln(" specify directory for temporary files");
+ stderr.writeln();
+ stderr.writeln("Performance tweaking parameters");
+ stderr.writeln(" --hash-table-size=HASH_TABLE_SIZE");
+ stderr.writeln(" size of hash table for finding read pairs (default is 262144 reads);");
+ stderr.writeln(" will be rounded down to the nearest power of two;");
+ stderr.writeln(" should be > (average coverage) * (insert size) for good performance");
+ stderr.writeln(" --overflow-list-size=OVERFLOW_LIST_SIZE");
+ stderr.writeln(" size of the overflow list where reads, thrown from the hash table,");
+ stderr.writeln(" get a second chance to meet their pairs (default is 200000 reads);");
+ stderr.writeln(" increasing the size reduces the number of temporary files created");
+ stderr.writeln(" --sort-buffer-size=SORT_BUFFER_SIZE");
+ stderr.writeln(" total amount of memory (in *megabytes*) used for sorting purposes;");
+ stderr.writeln(" the default is 2048, increasing it will reduce the number of created");
+ stderr.writeln(" temporary files and the time spent in the main thread");
+ stderr.writeln(" --io-buffer-size=BUFFER_SIZE");
+ stderr.writeln(" two buffers of BUFFER_SIZE *megabytes* each are used");
+ stderr.writeln(" for reading and writing BAM during the second pass (default is 128)");
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return markdup_main(args);
+ }
+}
+
+int markdup_main(string[] args) {
+
+ MarkDuplicatesConfig cfg;
+ cfg.tmpdir = defaultTmpDir();
+
+ auto unparsed_args = args.dup;
+
+ bool remove_duplicates;
+ uint n_threads = totalCPUs;
+ bool show_progress;
+ size_t io_buffer_size = 128;
+ size_t hash_table_size;
+ size_t sort_buffer_size = 2048;
+ int compression_level = -1;
+
+ bool cmp_with_picard_mode; // for development purposes!
+
+ StopWatch sw;
+ sw.start();
+
+ try {
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "remove-duplicates|r", &remove_duplicates,
+ "nthreads|t", &n_threads,
+ "compression-level|l", &compression_level,
+ "show-progress|p", &show_progress,
+ "tmpdir", &cfg.tmpdir,
+ "hash-table-size", &hash_table_size,
+ "overflow-list-size", &cfg.overflow_list_size,
+ "io-buffer-size", &io_buffer_size,
+ "sort-buffer-size", &sort_buffer_size,
+ "compare-with-picard-mode", &cmp_with_picard_mode);
+
+ if (args.length < 3) {
+ printUsage();
+ return 0;
+ }
+
+ foreach (arg; args[1 .. $-1])
+ protectFromOverwrite(arg, args[$-1]);
+ cfg.tmpdir = randomSubdir(cfg.tmpdir, "markdup-");
+
+ if (n_threads == 0) n_threads = 1;
+ std.parallelism.defaultPoolThreads = n_threads - 1;
+
+ if (cmp_with_picard_mode) {
+ static class PicardChecker {
+ static string output_filename;
+ this(MarkDuplicatesConfig cfg, string fn1, string fn2, TaskPool pool) {
+ output_filename = buildPath(cfg.tmpdir, "_diff1.bam");
+ auto output_filename2 = buildPath(cfg.tmpdir, "_diff2.bam");
+ auto b1 = new BamReader(fn1, pool);
+ auto b2 = new BamReader(fn2, pool);
+ b1.setBufferSize(64_000_000);
+ b2.setBufferSize(64_000_000);
+ auto w = new BamWriter(output_filename, 1, pool);
+ auto w2 = new BamWriter(output_filename2, 1, pool);
+ scope(exit) {
+ w.finish();
+ w2.finish();
+ stderr.writeln("Saved differing reads to ", output_filename,
+ " and ", output_filename2);
+ }
+ w.writeSamHeader(b1.header);
+ w.writeReferenceSequenceInfo(b1.reference_sequences);
+ w2.writeSamHeader(b2.header);
+ w2.writeReferenceSequenceInfo(b2.reference_sequences);
+ foreach (pair; zip(b1.reads, b2.reads)) {
+ if (pair[0].is_duplicate != pair[1].is_duplicate) {
+ w.writeRecord(pair[0]);
+ w2.writeRecord(pair[1]);
+ }
+ }
+ }
+
+ void check(PairedEndsInfo[] dups) {
+ if (dups.length != 2 || dups[0].score != dups[1].score) {
+ writefln("weird group of PE duplicates found, their indices: %(%s, %); scores: %(%s, %)",
+ roundRobin(dups.map!"a.idx1", dups.map!"a.idx2"),
+ dups.map!"a.score");
+ }
+ }
+
+ void check(SingleEndInfo[] dups, bool has_paired) {
+ if (has_paired || dups.length != 2 || dups[0].score != dups[1].score) {
+ writefln("weird group of SE duplicates found, their indices: %(%s, %); scores: %(%s, %)",
+ dups.map!"a.idx", dups.map!"a.score");
+ }
+ }
+ }
+ auto checker = new PicardChecker(cfg, args[1], args[2], taskPool);
+ args[1] = checker.output_filename;
+ args[2] = "/dev/null";
+ cfg.pe_callback = (pe_dups) => checker.check(pe_dups);
+ cfg.se_callback = (se_dups, has_paired) => checker.check(se_dups, has_paired);
+ }
+
+ io_buffer_size <<= 20; // -> convert to megabytes
+
+ // max. 4 at the same time (single/paired/second reads + dup. indices)
+ cfg.bufsize = sort_buffer_size << 18;
+
+ cfg.hash_table_size_log2 = 10; // FIXME: overrides default value of 18
+ while ((2UL << cfg.hash_table_size_log2) <= hash_table_size)
+ cfg.hash_table_size_log2 += 1;
+ // 2^^(cfg.hash_table_size_log2 + 1) > hash_table_size
+
+ // Set up the BAM reader and pass in the thread pool
+ auto bam = new MultiBamReader(args[1 .. $-1], taskPool);
+ auto n_refs = bam.reference_sequences.length;
+ enforce(n_refs < 16384, "More than 16383 reference sequences are unsupported");
+
+ auto rg_index = new ReadGroupIndex(bam.header);
+
+ stderr.writeln("finding positions of the duplicate reads in the file...");
+
+ InputRange!IndexedBamRead reads;
+ shared(ProgressBar) bar;
+
+ void initInputs() {
+ if (!show_progress)
+ reads = bam.reads.withIndices.inputRangeObject;
+ else {
+ bar = new shared(ProgressBar)();
+ reads = bam.readsWithProgress((lazy float p) { bar.update(p); },
+ () { bar.finish(); }).withIndices
+ .inputRangeObject;
+ }
+ }
+
+ initInputs();
+ auto dup_idx_storage = getDuplicateOffsets(reads, rg_index, taskPool, cfg);
+
+ auto elapsed = sw.peek();
+ stderr.writeln("collected list of positions in ",
+ elapsed.seconds / 60, " min ",
+ elapsed.seconds % 60, " sec");
+
+ // marking or removing duplicates
+ bam = new MultiBamReader(args[1 .. $-1]);
+ bam.setBufferSize(io_buffer_size);
+ auto out_stream = new BufferedFile(args[$-1], FileMode.OutNew, io_buffer_size);
+ auto writer = new BamWriter(out_stream, compression_level);
+ writer.setFilename(args[$-1]);
+ scope(exit) writer.finish();
+ auto header = addPG("markdup", unparsed_args, bam.header);
+ writer.writeSamHeader(header);
+ writer.writeReferenceSequenceInfo(bam.reference_sequences);
+
+ stderr.writeln(remove_duplicates ? "removing" : "marking", " duplicates...");
+
+ initInputs();
+
+ auto indices = dup_idx_storage.reader;
+
+ foreach (read; reads) {
+ if (!indices.empty && read.index == indices.front) {
+ assumeUnique(read).is_duplicate = true;
+ indices.popFront();
+ } else if (!read.is_secondary_alignment && !read.is_supplementary) {
+ assumeUnique(read).is_duplicate = false;
+ }
+
+ if (read.is_duplicate && remove_duplicates)
+ continue;
+
+ writer.writeRecord(read);
+ }
+
+ dup_idx_storage.removeTemporaryFiles();
+ try {
+ std.file.rmdirRecurse(cfg.tmpdir);
+ } catch (FileException e) {
+ }
+
+ sw.stop();
+ stderr.writeln("total time elapsed: ",
+ sw.peek().seconds / 60, " min ",
+ sw.peek().seconds % 60, " sec");
+
+ } catch (Throwable e) {
+ stderr.writeln("sambamba-markdup: ", e.msg);
+ version(development) { throw e; }
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/sambamba/merge.d b/sambamba/merge.d
new file mode 100644
index 0000000..6cfad25
--- /dev/null
+++ b/sambamba/merge.d
@@ -0,0 +1,466 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.merge;
+/*
+ Merging.
+
+ In order for several BAM files to be merged into one, they must firstly be
+ sorted in the same order.
+
+ 1) Merging headers.
+
+ a) Merging sequence dictionaries.
+
+ Create map: file -> old ref. ID -> index of sequence name in merged dict
+
+ If sorting order is coordinate, the following invariant holds:
+ for any file, reference sequences sorted by old ref. ID appear in
+ the same order in the merged list (if that's impossible,
+ throw an exception because one of files needs to be sorted again
+ with a different order of reference sequences)
+
+ For that, a graph is created and topological sort is performed.
+
+ b) Merging program records.
+
+ Create map: file -> old program record name -> new program record name
+
+ Some ids can be changed to avoid collisions.
+
+ Invariant: partial order, implied by PP tag, is maintained.
+
+ Program records form disjoint set of trees if we consider this relation,
+ therefore to maintain partial order we walk these trees with BFS,
+ and on each step update changed PP tags.
+
+ c) Merging read group dictionaries.
+
+ The simplest one because there're no restrictions on order.
+ Just detect collisions and rename read groups appropriately in such a case.
+
+ 2) Merging alignments.
+
+ Use maps built during merging headers:
+ file -> old reference id -> new reference id,
+ file -> old program record name -> new program record name,
+ file -> old read group name -> new read group name
+
+ filenames -> ranges of alignments for these filenames
+ -> ranges of alignments modified accordingly to the maps
+ -> nWayUnion with a comparator corresponding to the common sorting order
+ -> write BAM with merged header and reference sequences info
+
+ */
+
+import bio.bam.reader;
+import bio.bam.writer;
+import bio.bam.utils.samheadermerger;
+import bio.bam.read;
+
+import std.stdio;
+import std.algorithm;
+import std.conv;
+import std.functional;
+import std.array;
+import std.file;
+import std.range;
+import std.typecons;
+import std.traits;
+import std.numeric;
+import std.parallelism;
+import std.stream;
+import std.getopt;
+
+import core.atomic;
+import core.memory;
+
+import sambamba.utils.common.progressbar;
+import sambamba.utils.common.overwrite;
+import sambamba.utils.common.filtering;
+import sambamba.utils.common.readstorage;
+import bio.core.utils.outbuffer;
+import bio.core.utils.roundbuf;
+import bio.bam.utils.value;
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-merge [options] <output.bam> <input1.bam> <input2.bam> [...]");
+ stderr.writeln();
+ stderr.writeln("Options: -t, --nthreads=NTHREADS");
+ stderr.writeln(" number of threads to use for compression/decompression");
+ stderr.writeln(" -l, --compression-level=COMPRESSION_LEVEL");
+ stderr.writeln(" level of compression for merged BAM file, number from 0 to 9");
+ stderr.writeln(" -H, --header");
+ stderr.writeln(" output merged header to stdout in SAM format, other options are ignored; mainly for debug purposes");
+ stderr.writeln(" -p, --show-progress");
+ stderr.writeln(" show progress bar in STDERR");
+ stderr.writeln(" -F, --filter=FILTER");
+ stderr.writeln(" keep only reads that satisfy FILTER");
+}
+
+// these variables can be implicitly used in tasks created in writeBAM
+shared(SamHeaderMerger) merger;
+shared(SamHeader) merged_header;
+shared(size_t[size_t][]) ref_id_map;
+shared(size_t[size_t][]) ref_id_reverse_map;
+shared(string[string][]) program_id_map;
+shared(string[string][]) readgroup_id_map;
+
+__gshared static TaskPool task_pool;
+__gshared static Filter read_filter;
+
+auto modifyAlignmentRange(T)(T alignments_with_file_id) {
+ return AlignmentRangeModifier!T(alignments_with_file_id);
+}
+
+ubyte[] modifier(BamRead[] reads, OutBuffer output_buffer, size_t _file_id,
+ ubyte[] tmp)
+{
+ // it's practically impossible that one will merge > 10000 files,
+ // so add 10 extra bytes for each read (5 for RG and 5 for PG)
+ size_t bytes_required = 0;
+ foreach (read; reads) {
+ bytes_required += read.size_in_bytes + 10;
+ }
+
+ output_buffer.capacity = bytes_required;
+
+ foreach (read; reads) {
+ auto data = read.raw_data;
+
+ auto cigar_offset = 8 * int.sizeof + read.name.length + 1;
+ auto tags_offset = cigar_offset + uint.sizeof * read.cigar.length +
+ (3 * read.sequence_length + 1) / 2;
+
+ auto start_offset = output_buffer.data.length + int.sizeof;
+ auto p = cast(int*)(output_buffer.data.ptr + start_offset - int.sizeof);
+ output_buffer.putUnsafe(int.init);
+ size_t chunk_size = read.size_in_bytes - int.sizeof;
+
+ // change ref. id
+ auto ref_id_ptr = cast(int*)(data.ptr);
+ auto old_ref_id = *ref_id_ptr;
+ if (old_ref_id != -1 && old_ref_id in ref_id_map[_file_id]) {
+ auto new_ref_id = to!int(ref_id_map[_file_id][old_ref_id]);
+ if (new_ref_id != old_ref_id)
+ *ref_id_ptr = new_ref_id;
+ }
+
+ data[cigar_offset - 1] = 0;
+ output_buffer.putUnsafe(data[0 .. tags_offset]);
+
+ auto bytes_written = tags_offset;
+
+ // cool, now change PG and RG tags where needed
+ foreach (tag, value; read) {
+ Value val = value;
+ if (tag == "PG") {
+ auto pg_str = *cast(string*)(&val);
+ if (pg_str in program_id_map[_file_id]) {
+ auto new_pg = program_id_map[_file_id][pg_str];
+ if (new_pg != pg_str) {
+ val = Value(new_pg);
+ auto delta = new_pg.length - pg_str.length;
+ chunk_size += cast(int)delta;
+ }
+ }
+ } else if (tag == "RG") {
+ auto rg_str = *cast(string*)(&val);
+ if (rg_str in readgroup_id_map[_file_id]) {
+ auto new_rg = readgroup_id_map[_file_id][rg_str];
+ if (new_rg != rg_str) {
+ val = Value(new_rg);
+ auto delta = new_rg.length - rg_str.length;
+ chunk_size += cast(int)delta;
+ }
+ }
+ }
+ output_buffer.putUnsafe(cast(ubyte[])tag);
+ emplaceValue(tmp.ptr, val);
+ auto val_size = sizeInBytes(val);
+ output_buffer.putUnsafe(tmp[0 .. val_size]);
+ bytes_written += 2 + val_size;
+ }
+ import std.exception;
+ enforce(bytes_written == chunk_size);
+
+ *p = cast(int)chunk_size;
+ }
+ return output_buffer.data;
+}
+
+struct AlignmentRangeModifier(T) {
+ private {
+ InputRange!BamRead _reads;
+ size_t _file_id;
+
+ alias TaskWithData!(modifier, size_t, ubyte[]) ModifyTask;
+ RoundBuf!ModifyTask _tasks;
+
+ enum _tmp_size = 128 * 1024;
+ size_t _task_index;
+ ubyte[] _tmp;
+ ubyte[] _tmp_space(size_t _task_index) {
+ auto n_tasks = _tmp.length / _tmp_size;
+ auto k =_task_index % n_tasks;
+ return _tmp[k * _tmp_size .. $][0 .. _tmp_size];
+ }
+
+ ubyte[] _curr_data;
+ size_t _bytes_read;
+ size_t _curr_data_len;
+ bool _empty;
+ BamRead _front;
+ }
+
+ bool empty() @property const {
+ return _empty;
+ }
+
+ this(T alignments_with_file_id) {
+ _reads = alignments_with_file_id[0].filtered(read_filter).inputRangeObject;
+ _file_id = alignments_with_file_id[1];
+
+ auto n_tasks = max(task_pool.size, 2) * 4;
+ _tasks = RoundBuf!ModifyTask(n_tasks);
+ _tmp = new ubyte[_tmp_size * n_tasks];
+
+ foreach (i; 0 .. n_tasks) {
+ if (_reads.empty)
+ break;
+ auto t = new ModifyTask();
+ t.input_buffer.fill(&_reads);
+ t.run(task_pool, _file_id, _tmp_space(_task_index));
+ _tasks.put(t);
+ ++_task_index;
+ }
+
+ popFront();
+ }
+
+ BamRead front() {
+ return _front;
+ }
+
+ void popFront() {
+ if (_bytes_read == _curr_data_len) {
+ if (_tasks.empty) {
+ _empty = true;
+ return;
+ }
+
+ auto t = _tasks.front;
+ auto data = t.conversion_task.yieldForce();
+ _curr_data.length = max(data.length, _curr_data.length);
+ _curr_data_len = data.length;
+ _curr_data[0 .. data.length] = data[];
+ _bytes_read = 0;
+ _tasks.popFront();
+ if (!_reads.empty) {
+ t.input_buffer.clear();
+ t.input_buffer.fill(&_reads);
+ t.output_buffer.clear();
+ t.run(task_pool, _file_id, _tmp_space(_task_index));
+ _tasks.put(t);
+ ++_task_index;
+ }
+ }
+
+ int chunk_size = *(cast(int*)(_curr_data.ptr + _bytes_read));
+ auto chunk = _curr_data[int.sizeof + _bytes_read .. $][0 .. chunk_size];
+ bool fix_byte_order = false;
+ _front = BamRead(chunk, fix_byte_order);
+ _bytes_read += int.sizeof + chunk_size;
+ }
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return merge_main(args);
+ }
+}
+
+int merge_main(string[] args) {
+
+ int compression_level = -1;
+ int number_of_threads = totalCPUs;
+ bool validate_headers = false;
+ bool header_only = false;
+ bool show_progress = false;
+ string filter_str = null;
+
+ try {
+
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "nthreads|t", &number_of_threads,
+ "compression-level|l", &compression_level,
+ "validate-headers|v", &validate_headers,
+ "header|H", &header_only,
+ "show-progress|p", &show_progress,
+ "filter|F", &filter_str);
+
+ if (args.length < 4) {
+ printUsage();
+ return 1;
+ }
+
+ read_filter = createFilterFromQuery(filter_str);
+
+ task_pool = new TaskPool(number_of_threads);
+ scope(exit) task_pool.finish();
+
+ auto output_filename = args[1];
+ auto filenames = args[2 .. $];
+ foreach (filename; filenames)
+ protectFromOverwrite(filename, output_filename);
+
+ GC.disable();
+
+ BamReader[] files;
+ files.length = filenames.length;
+ foreach (i; 0 .. files.length) {
+ files[i] = new BamReader(filenames[i], task_pool);
+ files[i].setBufferSize(50_000_000 / files.length); //TODO
+ files[i].assumeSequentialProcessing();
+ }
+ auto headers = array(map!"a.header"(files));
+
+ GC.disable();
+ merger = cast(shared) new SamHeaderMerger(headers, validate_headers);
+ merged_header = merger.merged_header;
+ ref_id_map = merger.ref_id_map;
+ ref_id_reverse_map = merger.ref_id_reverse_map;
+ readgroup_id_map = merger.readgroup_id_map;
+ program_id_map = merger.program_id_map;
+
+ auto strategy = cast()merger.strategy;
+ auto n_references = (cast()merged_header).sequences.length;
+
+ if (header_only) {
+ write((cast()merged_header).text);
+ return 0;
+ }
+
+ // alignmentranges must hold tuples of some range of alignment and file id
+ void mergeAlignments(R)(R alignmentranges) {
+ // ranges with replaced reference ID, PG and RG tags
+ auto modifiedranges = array(map!modifyAlignmentRange(alignmentranges));
+
+ // write BAM file
+ Stream stream = new BufferedFile(output_filename, FileMode.OutNew, 50_000_000); // TODO
+ scope(failure) stream.close();
+
+ auto reference_sequences = new ReferenceSequenceInfo[(cast()merged_header).sequences.length];
+ size_t i;
+ foreach (line; (cast()merged_header).sequences.values) {
+ reference_sequences[i] = ReferenceSequenceInfo(line.name, line.length);
+ ++i;
+ }
+
+ auto writer = new BamWriter(stream, compression_level, task_pool);
+ writer.setFilename(output_filename);
+ scope(exit) writer.finish();
+ writer.writeSamHeader(cast()merged_header);
+ writer.writeReferenceSequenceInfo(reference_sequences);
+
+ switch (merged_header.sorting_order) {
+ case SortingOrder.queryname:
+ foreach (read; nWayUnion!compareReadNames(modifiedranges))
+ writer.writeRecord(read);
+ break;
+ case SortingOrder.coordinate:
+ foreach (read; nWayUnion!compareCoordinates(modifiedranges))
+ writer.writeRecord(read);
+ break;
+ default: assert(0);
+ }
+ } // mergeAlignments
+
+ if (show_progress && strategy == SamHeaderMerger.Strategy.simple) {
+ // tuples of (alignments, file_id)
+ shared(float[]) merging_progress;
+ merging_progress.length = files.length;
+
+ auto bar = new shared(ProgressBar)();
+
+ alias ReturnType!(BamReader.readsWithProgress!withoutOffsets) AlignmentRangePB;
+ auto alignmentranges_with_file_ids = new Tuple!(AlignmentRangePB, size_t)[files.length];
+
+ auto weights = cast(shared)array(map!(pipe!(getSize, to!float))(filenames));
+ normalize(cast()weights);
+
+ foreach (i; 0 .. files.length) {
+ alignmentranges_with_file_ids[i] = tuple(
+ files[i].readsWithProgress(
+ (size_t j) {
+ return (lazy float p) {
+ atomicStore(merging_progress[j], p);
+ synchronized (bar) {
+ bar.update(dotProduct(merging_progress, weights));
+ }
+ };
+ }(i)),
+ i
+ );
+ }
+ mergeAlignments(alignmentranges_with_file_ids);
+
+ bar.finish();
+ } else {
+ if (strategy == SamHeaderMerger.Strategy.simple) {
+ auto alignmentranges_with_file_ids = array(
+ zip(map!"a.reads"(files), iota(files.length))
+ );
+ mergeAlignments(alignmentranges_with_file_ids);
+ } else {
+ alias Tuple!(InputRange!BamRead, size_t) R;
+ auto alignmentranges_with_file_ids = new R[files.length];
+ foreach (k; 0 .. files.length) {
+ size_t[] order; // order of reference ids to fetch
+ order.length = files[k].reference_sequences.length;
+ size_t n_refs; // in this particular file
+ foreach (j; 0 .. n_references) { // refs from all files
+ auto old_ref_id_ptr = j in ref_id_reverse_map[k];
+ if (old_ref_id_ptr !is null) {
+ order[n_refs++] = *old_ref_id_ptr;
+ }
+ }
+ assert(n_refs == order.length);
+ order = order[0 .. n_refs];
+ auto reads = order.map!(
+ ref_id => files[k].reference(cast(int)ref_id)[]
+ ).joiner().chain(files[k].unmappedReads())
+ .map!(r => r.read).inputRangeObject();
+ alignmentranges_with_file_ids[k] = tuple(reads, k);
+ }
+ mergeAlignments(alignmentranges_with_file_ids);
+ }
+ }
+
+ } catch (Throwable e) {
+ version(development) {
+ throw e;
+ } else {
+ stderr.writeln("sambamba-merge: ", e.msg);
+ return 1;
+ }
+ }
+ return 0;
+}
diff --git a/sambamba/pileup.d b/sambamba/pileup.d
new file mode 100644
index 0000000..aed9a40
--- /dev/null
+++ b/sambamba/pileup.d
@@ -0,0 +1,726 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+/** module for executing samtools mpileup in parallel using named pipes,
+ * after chunking a file
+ */
+
+module sambamba.pileup;
+
+import sambamba.utils.common.bed;
+import sambamba.utils.common.tmpdir;
+import sambamba.utils.common.overwrite;
+import utils.lz4;
+
+import bio.bam.multireader;
+import bio.bam.reader;
+import bio.bam.writer;
+import bio.bam.pileup;
+
+import bio.core.utils.format : write;
+import bio.core.utils.roundbuf;
+import bio.core.utils.stream;
+
+import std.process;
+import std.stdio;
+import std.parallelism;
+import std.file : rmdirRecurse;
+import std.algorithm;
+import std.array;
+import std.getopt;
+import std.string : strip, indexOf, toStringz;
+import std.c.stdlib;
+import std.typecons;
+import std.stream;
+import std.range;
+import std.algorithm;
+import std.path;
+import std.traits;
+import std.typecons;
+import std.conv;
+import std.container;
+
+import core.thread;
+import core.sync.mutex, core.sync.condition;
+import core.sys.posix.sys.stat;
+import core.sys.posix.stdio : fopen;
+import core.stdc.errno;
+
+extern(C) char* mkdtemp(char* template_);
+extern(C) int mkfifo(immutable(char)* fn, int mode);
+
+string samtoolsBin = null; // cached path to samtools binary
+string samtoolsVersion = null;
+string bcftoolsBin = null;
+string bcftoolsVersion = null;
+
+// Return path to samtools after testing whether it exists and supports mpileup
+auto samtoolsInfo()
+{
+ if (samtoolsBin == null) {
+ auto paths = environment["PATH"].split(":");
+ auto a = array(filter!(path => std.file.exists(path ~ "/samtools"))(paths));
+ if (a.length == 0)
+ throw new Exception("failed to locate samtools executable in PATH");
+ samtoolsBin = a[0] ~ "/samtools";
+ // we found the path, now test the binary
+ auto samtools = execute([samtoolsBin]);
+ if (samtools.status != 1)
+ throw new Exception("samtools failed: ", samtools.output);
+ samtoolsVersion = samtools.output.split("\n")[2];
+ if (samtoolsVersion.startsWith("Version: 0."))
+ throw new Exception("versions 0.* of samtools/bcftools are unsupported");
+ }
+ return [samtoolsBin, samtoolsVersion];
+}
+
+auto samtoolsPath() { return samtoolsInfo()[0]; }
+
+auto bcftoolsPath()
+{
+ if (bcftoolsBin == null) {
+ auto paths = environment["PATH"].split(":");
+ auto a = array(filter!(path => std.file.exists(path ~ "/bcftools"))(paths));
+ if (a.length == 0)
+ throw new Exception("failed to locate bcftools executable in PATH");
+ bcftoolsBin = a[0] ~ "/bcftools";
+ // we found the path, now test the binary
+ auto bcftools = execute([bcftoolsBin]);
+ if (bcftools.status != 1)
+ throw new Exception("bcftools failed: ", bcftools.output);
+ bcftoolsVersion = bcftools.output.split("\n")[2];
+ if (bcftoolsVersion.startsWith("Version: 0."))
+ throw new Exception("versions 0.* of samtools/bcftools are unsupported");
+ }
+ return [bcftoolsBin, bcftoolsVersion];
+}
+
+void makeFifo(string filename) {
+ auto s = toStringz(filename);
+ int ret = mkfifo(s, octal!"666");
+ if (ret == -1) {
+ stderr.writeln(errno);
+ throw new Exception("failed to create named pipe " ~ filename);
+ }
+}
+
+struct BedRecord {
+ string reference;
+ ulong start;
+ ulong end;
+
+ void toString(scope void delegate(const(char)[]) dg) const {
+ dg.write(reference);
+ dg.write('\t');
+ dg.write(start);
+ dg.write('\t');
+ dg.write(end);
+ }
+}
+
+struct MArray(T) { T[] data; T* ptr; }
+
+MArray!char data;
+
+__gshared string this_app;
+
+private {
+ struct Recipe {
+ string strip_header_cmd;
+ string compression_cmd;
+ void function (ubyte[] data, std.stdio.File output_file) decompressionFunc;
+ }
+
+ void dump(ubyte[] data, std.stdio.File output_file) {
+ output_file.rawWrite(data);
+ }
+
+ void lz4decompress(ubyte[] data, std.stdio.File output_file) {
+ lz4decompressor.decompress(new MemoryStream(data), output_file);
+ }
+
+ __gshared Recipe[FileFormat] recipes;
+ __gshared LZ4Decompressor lz4decompressor;
+}
+
+// TODO: fix bcftoolsCommand and samtoolsCommand in the header
+void init() {
+ lz4decompressor = new LZ4Decompressor();
+
+ recipes[FileFormat.pileup] = Recipe(this_app~" strip_bcf_header --vcf",
+ this_app~" lz4compress",
+ &lz4decompress);
+ recipes[FileFormat.BCF] = Recipe(this_app~" strip_bcf_header --bcf",
+ null,
+ &dump);
+ recipes[FileFormat.uncompressedBCF] = Recipe(this_app~" strip_bcf_header --ubcf",
+ this_app~" lz4compress",
+ &lz4decompress);
+ recipes[FileFormat.VCF] = Recipe(this_app~" strip_bcf_header --vcf",
+ this_app~" lz4compress",
+ &lz4decompress);
+}
+
+string makeInputCmdLine(string input_cmd, FileFormat input_format, bool strip_header) {
+ auto recipe = recipes[input_format];
+ string cmd = input_cmd;
+ if (strip_header && recipe.strip_header_cmd !is null)
+ cmd ~= "| " ~ recipe.strip_header_cmd;
+ if (recipe.compression_cmd !is null)
+ cmd ~= "| " ~ recipe.compression_cmd;
+ return cmd;
+}
+
+void decompressIntoFile(char[] data, FileFormat input_format,
+ std.stdio.File output_file) {
+ recipes[input_format].decompressionFunc(cast(ubyte[])data, output_file);
+}
+
+struct Args {
+ string[] samtools_args;
+ string[] bcftools_args;
+ FileFormat input_format;
+
+ this(string[] samtools_args_, string[] bcftools_args_) {
+ samtools_args = unbundle(samtools_args_);
+ bcftools_args = unbundle(bcftools_args_, "O"); // keep -Ov|-Ob|...
+ auto samtools_output_fmt = fixSamtoolsArgs(samtools_args, !bcftools_args.empty);
+ auto bcftools_output_fmt = fixBcftoolsArgs(bcftools_args);
+
+ input_format = samtools_output_fmt;
+ if (bcftools_args.length > 0)
+ input_format = bcftools_output_fmt;
+ }
+
+ string makeCommandLine(string filename) {
+ auto basic_args = [samtoolsPath(), "mpileup", filename];
+ basic_args ~= ["-l", filename ~ ".bed"];
+ auto samtools_cmd = (basic_args ~ samtools_args).join(" ");
+ string cmd = samtools_cmd;
+ if (bcftools_args.length > 0) {
+ auto bcftools_cmd = bcftoolsPath()[0] ~ " " ~ bcftools_args.join(" ");
+ cmd = samtools_cmd ~ " | " ~ bcftools_cmd;
+ }
+
+ bool strip_header = !filename.endsWith("/1");
+ return makeInputCmdLine(cmd, input_format, strip_header);
+ }
+}
+
+enum FileFormat {
+ pileup,
+ BCF,
+ uncompressedBCF,
+ VCF,
+ gzippedVCF
+}
+
+string[] unbundle(string[] args, string exclude="") {
+ import std.ascii : isAlpha;
+ import std.conv : text;
+ import std.algorithm : count;
+ string[] unbundled;
+ foreach (a; args) {
+ if (a.length >= 2 && a[0] == '-' && exclude.count(a[1]) == 0) {
+ string[] expanded;
+ foreach (j, dchar c; a[1 .. $])
+ {
+ if (!isAlpha(c)) {
+ expanded ~= a[j + 1 .. $];
+ break;
+ }
+ expanded ~= text('-', c);
+ }
+ unbundled ~= expanded;
+ } else {
+ unbundled ~= a;
+ }
+ }
+ return unbundled;
+}
+
+// input: unbundled samtools arguments
+// output: detected output format
+FileFormat fixSamtoolsArgs(ref string[] args, bool use_caller) {
+ bool vcf = false;
+ bool bcf = false;
+ bool uncompressed = false;
+ bool[] keep;
+ foreach (i; 0 .. args.length) {
+ if (args[i] == "-o") {
+ throw new Exception("-o argument of samtools is disallowed, use --output-filename argument of sambamba mpileup");
+ }
+ if (args[i] == "-g") {
+ bcf = true; keep ~= true;
+ } else if (args[i] == "-v") {
+ vcf = true; keep ~= !use_caller;
+ } else if (args[i] == "-u") {
+ bcf = true; uncompressed = true; keep ~= true;
+ } else {
+ keep ~= true;
+ }
+ }
+
+ string[] fixed_args;
+ foreach (i; 0 .. args.length) {
+ if (keep[i])
+ fixed_args ~= args[i];
+ }
+
+ bool fixes_applied;
+ if (vcf && use_caller) {
+ fixed_args ~= ["-g", "-u"];
+ fixes_applied = true;
+ } else if (bcf && use_caller && !uncompressed) {
+ fixed_args ~= "-u";
+ fixes_applied = true;
+ }
+
+ args = fixed_args;
+
+ if (fixes_applied && use_caller) {
+ stderr.writeln("NOTE: changed samtools output format to uncompressed BCF for better performance (-gu)");
+ }
+
+ if (bcf && vcf) {
+ throw new Exception("samtools can't be asked for both -g and -v");
+ } else if (bcf && uncompressed) {
+ return FileFormat.uncompressedBCF;
+ } else if (bcf && !uncompressed) {
+ return FileFormat.BCF;
+ } else if (vcf && uncompressed) {
+ return FileFormat.VCF;
+ } else if (vcf && !uncompressed) {
+ // TODO
+ throw new Exception("compressed VCF is not supported, please use bgzip and uncompressed VCF");
+ } else {
+ return FileFormat.pileup;
+ }
+}
+
+// input: unbundled bcftools arguments
+// output: detected output format
+FileFormat fixBcftoolsArgs(ref string[] args) {
+ FileFormat fmt = FileFormat.VCF;
+ bool[] keep;
+ foreach (i; 0 .. args.length) {
+ if (args[i] == "-o") {
+ throw new Exception("-o argument of bcftools is disallowed, use --output-filename argument of sambamba mpileup");
+ }
+ if (args[i] == "-Ov") {
+ fmt = FileFormat.VCF; keep ~= true;
+ } else if (args[i] == "-Oz") {
+ // TODO
+ throw new Exception("compressed VCF is not supported, please use bgzip and uncompressed VCF");
+ fmt = FileFormat.gzippedVCF; keep ~= false;
+ } else if (args[i] == "-Ob") {
+ fmt = FileFormat.BCF; keep ~= true;
+ } else if (args[i] == "-Ou") {
+ fmt = FileFormat.uncompressedBCF; keep ~= true;
+ } else {
+ keep ~= true;
+ }
+ }
+
+ string[] fixed_args;
+ foreach (i; 0 .. args.length) {
+ if (keep[i])
+ fixed_args ~= args[i];
+ }
+
+ args = fixed_args;
+ return fmt;
+}
+
+class ChunkDispatcher(ChunkRange) {
+ private string tmp_dir_;
+ private ChunkRange chunks_;
+ private MultiBamReader bam_;
+ private size_t num_, curr_num_ = 1;
+ private int total_num_;
+ private FileFormat format_;
+ private std.stdio.File output_file_;
+ private size_t max_queue_length_;
+ private int prev_ref_id;
+ private ulong prev_pos_diff;
+ private size_t max_queue_data_size_;
+ private size_t curr_queue_data_size_;
+
+ private Mutex mutex_, queue_mutex_;
+ private Condition queue_not_empty_condition_, queue_not_full_condition_;
+
+ alias Tuple!(size_t, "num", char[], "data") Result;
+ alias Array!(Result) ResultQueue;
+ private BinaryHeap!(ResultQueue, "a.num > b.num") result_queue_;
+
+ alias ElementType!(Unqual!(ChunkRange)) Chunk;
+
+ this(string tmp_dir, ChunkRange chunks, MultiBamReader bam,
+ FileFormat format, std.stdio.File output_file, size_t max_queue_length,
+ size_t max_queue_data_size) {
+ tmp_dir_ = tmp_dir;
+ chunks_ = chunks;
+ bam_ = bam;
+ num_ = 0;
+ total_num_ = -1;
+ mutex_ = new Mutex();
+ queue_mutex_ = new Mutex();
+ queue_not_empty_condition_ = new Condition(queue_mutex_);
+ queue_not_full_condition_ = new Condition(queue_mutex_);
+ result_queue_ = heapify!("a.num > b.num", ResultQueue)(ResultQueue());
+ format_ = format;
+ output_file_ = output_file;
+ max_queue_length_ = max_queue_length;
+ max_queue_data_size_ = max_queue_data_size;
+ }
+
+ Nullable!(Tuple!(Chunk, string, size_t)) nextChunk() {
+ mutex_.lock();
+ scope(exit) mutex_.unlock();
+
+ typeof(return) chunk;
+ if (chunks_.empty) {
+ if (num_ == 0)
+ total_num_ = num_.to!int();
+ return chunk;
+ }
+
+ if (chunks_.front.ref_id >= bam_.reference_sequences.length) {
+ if (chunks_.front.ref_id != -1)
+ stderr.writeln("Invalid ref. id ", chunks_.front.ref_id, " in chunk #", num_ + 1);
+ return chunk;
+ }
+ ++num_;
+
+ auto filename = buildPath(tmp_dir_, num_.to!string());
+ chunk = tuple(chunks_.front, filename, num_);
+ chunks_.popFront();
+ if (chunks_.empty) {
+ stderr.writeln("[Last chunk fetched] ", num_);
+ total_num_ = num_.to!int();
+ }
+
+ if (num_ > 1) {
+ ulong diff = chunk[0].end_position - chunk[0].start_position;
+ int ref_id = chunk[0].ref_id;
+ if (ref_id == prev_ref_id && !chunk[0].front.reads.empty &&
+ prev_pos_diff + diff < chunk[0].front.reads[0].sequence_length) // assume reads are ~same length
+ stderr.writeln("[WARNING] COVERAGE IS TOO HIGH, INCREASE --buffer-size TO AVOID WRONG RESULTS");
+ prev_pos_diff = diff;
+ prev_ref_id = ref_id;
+ }
+
+ auto ref_name = bam_.reference_sequences[chunk[0].ref_id].name;
+ auto f = std.stdio.File(filename ~ ".bed", "w");
+ if (bed_filename is null) {
+ auto start = chunk[0].start_position;
+ auto end = chunk[0].end_position;
+
+ auto bed = BedRecord(ref_name, start, end);
+ f.writeln(bed);
+ } else {
+ foreach (reg; regions) {
+ if (chunk[0].ref_id != reg.ref_id) continue;
+ auto start = max(reg.start, chunk[0].start_position);
+ auto end = min(reg.end, chunk[0].end_position);
+ if (start > end) continue;
+ auto bed = BedRecord(ref_name, start, end);
+ f.writeln(bed);
+ }
+ }
+ f.close();
+
+ return chunk;
+ }
+
+ void queueResult(size_t num, char[] data) {
+ synchronized(queue_mutex_) {
+ while (true) { // wait until it's good time to put the result into the output queue
+ if (num == curr_num_) // always put if it should be written out now
+ break;
+ if (result_queue_.empty) // always put if the queue is empty
+ break;
+
+ if (result_queue_.length >= max_queue_length_) {
+ stderr.writeln("[chunk waiting for dump queue] ", num, " (output is too slow: reduce threads or improve output speed)");
+ queue_not_full_condition_.wait();
+ } else if (curr_queue_data_size_ + data.length > max_queue_data_size_) {
+ stderr.writeln("[chunk waiting for dump queue] ", num, " (output is too large: increase buffer size)");
+ queue_not_full_condition_.wait();
+ } else {
+ break;
+ }
+ }
+ result_queue_.insert(Result(num, data));
+ curr_queue_data_size_ += data.length;
+ queue_not_empty_condition_.notify();
+ }
+ stderr.writeln("[chunk queued for dumping] ", num);
+ }
+
+ void dumpResults() {
+ Result result;
+ while (!dumpFinished()) {
+ synchronized(queue_mutex_) {
+ while (!hasDumpableResult()) {
+ queue_not_empty_condition_.wait();
+ }
+ result = result_queue_.front;
+ result_queue_.popFront();
+ curr_queue_data_size_ -= result.data.length;
+ ++curr_num_;
+ queue_not_full_condition_.notifyAll();
+ }
+ decompressIntoFile(result.data, format_, output_file_);
+ stderr.writeln("[chunk dumped] ", result.num);
+ std.c.stdlib.free(result.data.ptr);
+ }
+ }
+
+private:
+ bool hasDumpableResult() {
+ synchronized(queue_mutex_) {
+ return !result_queue_.empty() && result_queue_.front.num == curr_num_;
+ }
+ }
+
+ bool dumpFinished() {
+ return total_num_ >= 0 && curr_num_.to!int() > total_num_;
+ }
+}
+
+void worker(Dispatcher)(Dispatcher d,
+ MultiBamReader bam,
+ Args args) {
+ while (true) {
+ auto result = d.nextChunk();
+ if (result.isNull)
+ return;
+
+ auto chunk = result[0];
+ auto filename = result[1];
+ auto num = result[2];
+ makeFifo(filename);
+
+ import core.sys.posix.signal;
+ signal(SIGPIPE, SIG_IGN);
+
+ auto writing_thread = new Thread(() {
+
+ auto output_stream = new bio.core.utils.stream.File(filename, "w");
+ stderr.writeln("[opened FIFO for writing] ", filename);
+ auto writer = new BamWriter(output_stream, 0);
+ writer.writeSamHeader(bam.header);
+ writer.writeReferenceSequenceInfo(bam.reference_sequences);
+ foreach (read; chunk.reads)
+ writer.writeRecord(read);
+ writer.finish();
+ stderr.writeln("[closed FIFO] ", filename);
+ });
+
+ auto cmd = args.makeCommandLine(filename);
+ stderr.writeln("[executing] ", cmd);
+ auto pp = pipeShell(cmd, Redirect.stdout);
+
+ writing_thread.start();
+
+ size_t capa = 1_024_576;
+ size_t used = 0;
+ char* output = cast(char*)std.c.stdlib.malloc(capa);
+
+ char[4096] buffer = void;
+ while (true) {
+ auto buf = pp.stdout.rawRead(buffer[]);
+ if (buf.length == 0)
+ break;
+ if (used + buf.length > capa) {
+ capa = max(capa * 2, used + buf.length);
+ output = cast(char*)std.c.stdlib.realloc(cast(void*)output, capa);
+ if (output is null)
+ throw new Exception("failed to allocate " ~ capa.to!string ~ " bytes");
+ }
+ output[used .. used + buf.length] = buf[];
+ used += buf.length;
+ }
+
+ writing_thread.join();
+ pp.pid.wait();
+
+ d.queueResult(num, output[0 .. used]);
+ }
+}
+
+auto chunkDispatcher(ChunkRange)(string tmp_dir, ChunkRange chunks,
+ MultiBamReader bam, FileFormat format,
+ std.stdio.File output_file, size_t max_queue_length, size_t max_queue_data_size) {
+ return new ChunkDispatcher!ChunkRange(tmp_dir, chunks, bam, format, output_file, max_queue_length, max_queue_data_size);
+}
+
+void printUsage() {
+ stderr.writeln("usage: sambamba-pileup [options] input.bam [input2.bam [...]]");
+ stderr.writeln(" [--samtools <samtools mpileup args>]");
+ stderr.writeln(" [--bcftools <bcftools call args>]");
+ stderr.writeln();
+ stderr.writeln("This subcommand relies on external tools and acts as a multi-core implementation of samtools and bcftools.");
+ stderr.writeln("Therefore, the following tools should be present in $PATH:");
+ stderr.writeln(" * samtools");
+ stderr.writeln(" * bcftools (when used)");
+ stderr.writeln();
+ stderr.writeln("If --samtools is skipped, samtools mpileup is called with default arguments");
+ stderr.writeln("If --bcftools is used without parameters, samtools is called with");
+ stderr.writeln(" switch '-gu' and bcftools is called as 'bcftools view -'");
+ stderr.writeln("If --bcftools is skipped, bcftools is not called");
+ stderr.writeln();
+ stderr.writeln("Sambamba splits input BAM files into chunks and feeds them");
+ stderr.writeln("to samtools mpileup and, optionally, bcftools in parallel.");
+ stderr.writeln("The chunks are slightly overlapping so that variant calling");
+ stderr.writeln("should not be impacted by these manipulations. The obtained results");
+ stderr.writeln("from the multiple processes are combined as ordered output.");
+ stderr.writeln();
+ stderr.writeln("Sambamba options:");
+// stderr.writeln(" -F, --filter=FILTER");
+// stderr.writeln(" set custom filter for alignments");
+ stderr.writeln(" -L, --regions=FILENAME");
+ stderr.writeln(" provide BED file with regions");
+ stderr.writeln(" (no need to duplicate it in samtools args);");
+ stderr.writeln(" all input files must be indexed");
+ stderr.writeln(" -o, --output-filename=<STDOUT>");
+ stderr.writeln(" specify output filename");
+ stderr.writeln(" --tmpdir=TMPDIR");
+ stderr.writeln(" directory for temporary files");
+ stderr.writeln(" -t, --nthreads=NTHREADS");
+ stderr.writeln(" maximum number of threads to use");
+ stderr.writeln(" -b, --buffer-size=64_000_000");
+ stderr.writeln(" chunk size (in bytes)");
+ stderr.writeln(" -B, --output-buffer-size=512_000_000");
+ stderr.writeln(" output buffer size (in bytes)");
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return pileup_main(args);
+ }
+}
+
+string output_filename = null;
+__gshared string bed_filename = null;
+__gshared BamRegion[] regions;
+
+int pileup_main(string[] args) {
+ this_app = args[0];
+ init();
+
+ auto bcftools_args = find(args, "--bcftools");
+ auto args1 = (bcftools_args.length>0 ? args[0 .. $-bcftools_args.length] : args );
+ auto samtools_args = find(args1, "--samtools");
+ auto own_args = (samtools_args.length>0 ? args1[0 .. $-samtools_args.length] : args1 );
+
+ if (!samtools_args.empty) {
+ samtools_args.popFront();
+ } else {
+ samtools_args = [];
+ }
+
+ if (!bcftools_args.empty) {
+ bcftools_args.popFront(); // remove the switch --bcftools
+ }
+
+ //string query;
+ uint n_threads = defaultPoolThreads;
+ std.stdio.File output_file = stdout;
+ size_t buffer_size = 64_000_000;
+ size_t output_buffer_size = 512_000_000;
+
+ string tmp_dir_prefix = defaultTmpDir();
+
+ try {
+ getopt(own_args,
+ std.getopt.config.caseSensitive,
+ "regions|L", &bed_filename,
+ //"filter|F", &query,
+ "output-filename|o", &output_filename,
+ "tmpdir", &tmp_dir_prefix,
+ "nthreads|t", &n_threads,
+ "buffer-size|b", &buffer_size,
+ "output-buffer-size|B", &output_buffer_size);
+
+ if (own_args.length < 2) {
+ printUsage();
+ return 0;
+ }
+
+ stderr.writeln("samtools mpileup options: ",samtools_args.join(" "));
+ if (bcftools_args.length>0)
+ stderr.writeln("bcftools options: ", bcftools_args.join(" "));
+
+ if (output_filename != null) {
+ foreach (filename; own_args[1 .. $])
+ protectFromOverwrite(filename, output_filename);
+ output_file = std.stdio.File(output_filename, "w+");
+ }
+
+ defaultPoolThreads = n_threads;
+ auto bam = new MultiBamReader(own_args[1 .. $]);
+
+ string tmp_dir = randomSubdir(tmp_dir_prefix);
+ scope(exit) rmdirRecurse(tmp_dir);
+
+ auto bundled_args = Args(samtools_args, bcftools_args);
+
+ InputRange!BamRead reads;
+ if (bed_filename is null) {
+ reads = inputRangeObject(bam.reads().map!`a.read`);
+ } else {
+ regions = parseBed(bed_filename, bam);
+ reads = inputRangeObject(bam.getReadsOverlapping(regions).map!`a.read`);
+ }
+
+ auto chunks = reads.pileupChunks(false, buffer_size);
+ auto dispatcher = chunkDispatcher(tmp_dir, chunks, bam, bundled_args.input_format, output_file,
+ 2 * n_threads, output_buffer_size);
+
+ auto writer = new Thread(&dispatcher.dumpResults);
+ writer.start();
+ auto threads = new ThreadGroup();
+
+ scope (exit) {
+ output_file.close();
+ }
+
+ foreach (i; 0 .. max(1, n_threads))
+ threads.create(() { worker(dispatcher, bam, bundled_args); });
+
+ threads.joinAll();
+ writer.join();
+ stderr.writeln("[Successful exit]");
+
+ return 0;
+
+ } catch (Exception e) {
+ stderr.writeln("sambamba-pileup: ", e.msg);
+
+ version(development) {
+ throw e;
+ }
+
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/sambamba/slice.d b/sambamba/slice.d
new file mode 100644
index 0000000..bc55ccd
--- /dev/null
+++ b/sambamba/slice.d
@@ -0,0 +1,334 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2014 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.slice;
+
+import bio.bam.reader;
+import bio.bam.writer;
+import bio.bam.constants;
+import bio.core.bgzf.block;
+import bio.core.bgzf.compress;
+import bio.core.utils.stream;
+import bio.core.region;
+
+import std.array;
+import std.stream;
+import std.getopt;
+import std.parallelism;
+import std.conv;
+import std.stdio;
+import std.exception;
+
+import sambamba.utils.common.overwrite;
+
+/**
+ Consider interval [beg .. end) on the reference, where 0 <= beg < end.
+
+ Let R1 = { read from BAM file | read overlaps [beg .. end), read.position < beg },
+ R2 = { read from BAM file | beg <= read.position < end },
+
+ s1_start_offset = virtual offset of the first read that overlaps [beg .. end)
+ s2_start_offset = virtual offset of the first read whose position >= beg
+ s2_end_offset = virtual offset of the first read whose position >= end
+
+ /\/\/\/\/\/\/\/\/\/\/\/\/#########============== ... =============#####
+BGZF blocks ..........)[...........)[..........)[..........)[. ... ....)[.........)[.......
+ . . .
+ s1_start_offset s2_start_offset s2_end_offset
+
+ /\/\/\/\/\/\/\/\/\/\/\/\/###### ...
+ ...)[..........)[...........)[..........)[..........)[. ... ....)[.........)[.......
+ . . .
+ s1_start_offset s2_start_offset, s2_end_offset
+
+ These numbers are not correctly defined in some cases, so let's extend their
+ definitions.
+
+ 1) There are no reads that overlap [beg .. end) (R1 and R2 are empty)
+ Set all three numbers to the virtual offset of the end of file.
+ 2) There are no reads that have position >= beg (R2 is empty)
+ Set both s2_start_offset and s2_end_offset to the end virtual offset of the last read in R1.
+ 3) There are reads that have position >= beg, but no one with position >= end
+ Set s2_end_offset to the end virtual offset of the last read from current reference.
+
+ Define sets
+ S1 = { read | s1_start_offset <= read.start_virtual_offset < s2_start_offset },
+ S2 = { read | s2_start_offset <= read.start_virtual_offset < s2_end_offset }
+
+ Notice that R1 is a subset of S1, and R2 = S2.
+
+ Now we divide the algorithm into subcases.
+
+ 1) Both R1 and R2 are empty.
+
+ Output BAM file with no reads.
+
+ 2) R1 is not empty, R2 is empty.
+
+ Output BAM file with reads from R1, creating new BGZF blocks for all of them.
+
+ 3) R1 is empty, R2 is not empty.
+
+ First of all, output BAM header and reference sequences information.
+
+ Take first read from R2. Adjust its first BGZF block by chomping s2_start_offset.uoffset
+ from the left, and output it. Set start_offset to the start file offset of the next BGZF block.
+ Take last read from R2. Adjust its last BGZF block by chomping everything after the end of
+ the alignment record. Set end_offset to the start file offset of this BGZF block.
+
+ Output first adjusted block, then copy of file since start_offset till end_offset, then
+ second adjusted block.
+
+ (It may turn out that after chomping some of blocks are empty. In this case we skip them.)
+
+ 4) R1 and R2 are not empty.
+
+ Since R1 and R2 are disjoint, combine approaches 2) and 3)
+*/
+
+
+void fetchRegion(BamReader bam, Region region, ref Stream stream)
+{
+ auto chr = region.reference;
+ auto beg = region.beg;
+ auto end = region.end;
+
+ auto filename = bam.filename;
+
+ auto reads1 = bam[chr][beg .. end];
+
+ auto eof_offset = bam.eofVirtualOffset();
+
+ VirtualOffset s1_start_offset;
+ VirtualOffset s2_start_offset;
+ VirtualOffset s2_end_offset = eof_offset;
+
+ if (reads1.empty) {
+ s1_start_offset = s2_start_offset = eof_offset;
+ } else {
+ s1_start_offset = s2_start_offset = reads1.front.start_virtual_offset;
+ }
+
+ // Set R1
+ auto r1 = appender!(typeof(reads1.front)[])();
+
+ while (!reads1.empty) {
+ auto front = reads1.front;
+ if (front.position < beg) {
+ r1.put(front);
+ s2_start_offset = front.end_virtual_offset;
+ reads1.popFront();
+ } else {
+ break;
+ }
+ }
+
+ auto reference = bam[chr];
+ if (end == uint.max)
+ end = reference.length;
+ auto reads2 = reference[end .. uint.max];
+
+ if (reads1.empty && reads2.empty) {
+ // are there any reads with position >= beg?
+ s2_end_offset = s2_start_offset;
+ } else if (!reads1.empty && reads2.empty) {
+ // are there any reads with position >= end?
+ s2_end_offset = bam[chr].endVirtualOffset();
+ } else {
+ foreach (read; reads2) {
+ s2_end_offset = read.start_virtual_offset;
+ if (read.position >= end) {
+ break;
+ }
+ }
+ }
+
+ // write header and reference sequence information
+ auto writer = new BamWriter(stream);
+ writer.writeSamHeader(bam.header);
+ writer.writeReferenceSequenceInfo(bam.reference_sequences);
+ // write R1
+ foreach (read; r1.data)
+ writer.writeRecord(read);
+ writer.flush();
+
+ copyAsIs(bam, stream, s2_start_offset, s2_end_offset);
+ // write EOF
+ stream.writeExact(BAM_EOF.ptr, BAM_EOF.length);
+}
+
+void fetchUnmapped(BamReader bam, Stream stream) {
+ auto writer = new BamWriter(stream);
+ writer.writeSamHeader(bam.header);
+ writer.writeReferenceSequenceInfo(bam.reference_sequences);
+ writer.flush();
+
+ auto unmapped_reads = bam.unmappedReads();
+ if (!unmapped_reads.empty) {
+ copyAsIs(bam, stream,
+ unmapped_reads.front.start_virtual_offset,
+ bam.eofVirtualOffset());
+ }
+
+ stream.writeExact(BAM_EOF.ptr, BAM_EOF.length);
+}
+
+version (Linux) {
+ import core.sys.posix.fcntl;
+ extern(C) int posix_fadvise(int, off_t, off_t, int);
+}
+
+void copyAsIs(BamReader bam, Stream stream,
+ VirtualOffset s2_start_offset, VirtualOffset s2_end_offset)
+{
+ // R2 is non-empty
+ if (s2_start_offset < s2_end_offset) {
+
+ // Either R2 is fully contained in one BGZF block...
+ if (s2_start_offset.coffset == s2_end_offset.coffset) {
+ // write chomped block
+ auto block = bam.getBgzfBlockAt(s2_start_offset.coffset);
+ auto data = decompressBgzfBlock(block).decompressed_data;
+ data = data[s2_start_offset.uoffset .. s2_end_offset.uoffset];
+ stream.write(bgzfCompress(data, -1));
+ } else { // ...or it spans several of them.
+
+ // left chomped block
+ auto block1 = bam.getBgzfBlockAt(s2_start_offset.coffset);
+ auto copy_start_offset = block1.end_offset;
+
+ auto data1 = decompressBgzfBlock(block1).decompressed_data;
+ data1 = data1[s2_start_offset.uoffset .. $];
+ if (data1.length > 0) {
+ stream.write(bgzfCompress(data1, -1));
+ }
+
+ // right chomped block
+ auto block2 = bam.getBgzfBlockAt(s2_end_offset.coffset);
+
+ auto data2 = decompressBgzfBlock(block2).decompressed_data;
+ data2 = data2[0 .. s2_end_offset.uoffset];
+
+ auto copy_end_offset = s2_end_offset.coffset;
+
+ enum N = 8192;
+ ubyte[N] copy_buffer;
+ auto file_stream = new bio.core.utils.stream.File(bam.filename);
+
+ version (Linux) {
+ off_t offset = copy_start_offset;
+ off_t len = copy_end_offset - copy_start_offset;
+ immutable int POSIX_FADV_SEQUENTIAL = 2;
+ posix_fadvise(file_stream.handle, offset, len, POSIX_FADV_SEQUENTIAL);
+ }
+
+ file_stream.seekSet(copy_start_offset);
+
+ size_t curpos = cast(size_t)copy_start_offset;
+ while (copy_end_offset - curpos > N) {
+ file_stream.readExact(copy_buffer.ptr, N);
+ stream.writeExact(copy_buffer.ptr, N);
+ curpos += N;
+ }
+
+ file_stream.readExact(copy_buffer.ptr, cast(size_t)copy_end_offset - curpos);
+ stream.writeExact(copy_buffer.ptr, cast(size_t)copy_end_offset - curpos);
+
+ if (data2.length > 0)
+ stream.write(bgzfCompress(data2, -1));
+ }
+ }
+}
+
+void printUsage()
+{
+ stderr.writeln("Usage: sambamba-slice [options] <input.bam> <region>");
+ stderr.writeln();
+ stderr.writeln(" Fast copy of a region from indexed BAM file to a new file");
+ stderr.writeln();
+ stderr.writeln(" Region is given in standard form ref:beg-end.");
+ stderr.writeln(" In addition, region '*' denotes reads with no reference.");
+ stderr.writeln(" Output is to STDOUT unless output filename is specified.");
+ stderr.writeln();
+ stderr.writeln("OPTIONS: -o, --output-filename=OUTPUT_FILENAME");
+ stderr.writeln(" output BAM filename");
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return slice_main(args);
+ }
+}
+
+int slice_main(string[] args) {
+
+ // at least two arguments must be presented
+ string output_filename = null;
+
+ try {
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "output-filename|o", &output_filename);
+
+ if (args.length < 3) {
+ printUsage();
+ return 0;
+ }
+
+ protectFromOverwrite(args[1], output_filename);
+
+ import std.parallelism;
+ defaultPoolThreads = 2;
+
+ auto bam = new BamReader(args[1]);
+
+ Stream stream;
+ scope(exit) stream.close();
+
+ if (output_filename != null) {
+ stream = new std.stream.BufferedFile(output_filename, FileMode.OutNew);
+ } else {
+ immutable BUFSIZE = 1_048_576;
+ version (Posix) {
+ auto handle = stdout.fileno;
+ }
+ version (Windows) {
+ import core.sys.windows.windows;
+ auto handle = GetStdHandle(STD_OUTPUT_HANDLE);
+ }
+ stream = new std.stream.BufferedFile(handle, FileMode.Out, BUFSIZE);
+ }
+
+ if (args[2] == "*") {
+ fetchUnmapped(bam, stream);
+ } else {
+ auto region = parseRegion(args[2]);
+ fetchRegion(bam, region, stream);
+ }
+
+ } catch (Exception e) {
+ stderr.writeln("sambamba-slice: ", e);
+ version (development) {
+ throw e;
+ }
+
+ return 1;
+ }
+ return 0;
+}
diff --git a/sambamba/sort.d b/sambamba/sort.d
new file mode 100644
index 0000000..4eed5f7
--- /dev/null
+++ b/sambamba/sort.d
@@ -0,0 +1,588 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2014 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.sort;
+
+import bio.bam.reader;
+import bio.bam.writer;
+import bio.sam.header;
+import bio.bam.read;
+import bio.bam.splitter;
+import bio.core.utils.tmpfile;
+
+import std.range;
+import std.datetime;
+import std.algorithm;
+import std.traits;
+import std.array;
+import std.ascii;
+import std.numeric;
+import std.parallelism;
+import std.getopt;
+import std.path;
+import std.file;
+import std.stream;
+import std.stdio;
+import std.typecons;
+import core.atomic;
+
+import std.c.stdlib;
+import std.c.string;
+
+import sambamba.utils.common.progressbar;
+import sambamba.utils.common.overwrite;
+import sambamba.utils.common.tmpdir;
+import sambamba.utils.common.filtering;
+import sambamba.utils.common.file;
+
+import thirdparty.mergesort;
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-sort [options] <input.bam>");
+ stderr.writeln();
+ stderr.writeln("Options: -m, --memory-limit=LIMIT");
+ stderr.writeln(" approximate total memory limit for all threads (by default 2GB)");
+ stderr.writeln(" --tmpdir=TMPDIR");
+ stderr.writeln(" directory for storing intermediate files; default is system directory for temporary files");
+ stderr.writeln(" -o, --out=OUTPUTFILE");
+ stderr.writeln(" output file name; if not provided, the result is written to a file with .sorted.bam extension");
+ stderr.writeln(" -n, --sort-by-name");
+ stderr.writeln(" sort by read name instead of coordinate (lexicographical order)");
+ stderr.writeln(" -N, --natural-sort");
+ stderr.writeln(" sort by read name instead of coordinate (so-called 'natural' sort as in samtools)");
+ stderr.writeln(" -l, --compression-level=COMPRESSION_LEVEL");
+ stderr.writeln(" level of compression for sorted BAM, from 0 to 9");
+ stderr.writeln(" -u, --uncompressed-chunks");
+ stderr.writeln(" write sorted chunks as uncompressed BAM (default is writing with compression level 1), that might be faster in some cases but uses more disk space");
+ stderr.writeln(" -p, --show-progress");
+ stderr.writeln(" show progressbar in STDERR");
+ stderr.writeln(" -t, --nthreads=NTHREADS");
+ stderr.writeln(" use specified number of threads");
+ stderr.writeln(" -F, --filter=FILTER");
+ stderr.writeln(" keep only reads that satisfy FILTER");
+}
+
+version(standalone) {
+ int main(string[] args) {
+ return sort_main(args);
+ }
+}
+
+private __gshared bool sort_by_name;
+private __gshared bool natural_sort;
+private bool show_progress;
+
+private shared(ProgressBar) bar;
+private shared(float[]) weights;
+private shared(float[]) merging_progress;
+
+class Sorter {
+
+ BamReader bam;
+ TaskPool task_pool;
+ size_t memory_limit = 2u * 1024 * 1024 * 1024;
+ string tmpdir;
+ int compression_level = -1;
+ bool uncompressed_chunks = false;
+ string output_filename = null;
+ string filename = null;
+ string filter_str = null;
+
+ this() {
+ tmpdir = defaultTmpDir();
+ }
+
+ struct UnsortedChunk {
+ size_t max_sz;
+
+ this(size_t max_total_size) {
+ max_sz = max_total_size;
+ while (read_storage is null && max_sz > 65536) {
+ read_storage = cast(ubyte*)std.c.stdlib.malloc(max_sz);
+ if (read_storage is null)
+ max_sz /= 2;
+ }
+ _reads_capa = 1024;
+ auto sz = BamRead.sizeof * _reads_capa;
+ _reads = cast(BamRead*)std.c.stdlib.malloc(sz);
+ if (_reads is null) {
+ throw new Exception("alloc failed: no space for read pointers");
+ }
+ }
+
+ void clear() {
+ _used = 0;
+ _n_reads = 0;
+ if (_low_memory) {
+ auto realloc_storage = cast(ubyte*)std.c.stdlib.realloc(read_storage, max_sz / 2);
+ if (realloc_storage !is null) {
+ max_sz /= 2;
+ read_storage = realloc_storage;
+ stderr.writeln("reduced maximum buffer size to ", max_sz);
+ }
+ _low_memory = false;
+ }
+ }
+
+ void fill(R)(R* reads) {
+ while (!reads.empty) {
+ auto read = reads.front;
+ auto len = read.raw_data.length;
+ if (len + _used > max_sz)
+ break;
+
+ if (_n_reads == _reads_capa) {
+ auto realloc_reads = cast(BamRead*)std.c.stdlib.realloc(_reads, 2 * _reads_capa * BamRead.sizeof);
+ if (realloc_reads is null) {
+ _low_memory = true;
+ stderr.writeln("realloc failed: system low on memory, limited to ", _reads_capa, " reads in buffer");
+ break;
+ } else {
+ _reads_capa *= 2;
+ _reads = realloc_reads;
+ }
+ }
+ std.c.string.memcpy(read_storage + _used, read.raw_data.ptr, len);
+ _reads[_n_reads].raw_data = read_storage[_used .. _used + len];
+ _reads[_n_reads].associateWithReader(read.reader);
+
+ _n_reads += 1;
+ _used += len;
+
+ reads.popFront();
+ }
+
+ if (_n_reads == 0) {
+ auto read = reads.front;
+ auto len = read.raw_data.length;
+ assert(len > max_sz);
+ _n_reads = 1;
+ auto realloc_storage = cast(ubyte*)std.c.stdlib.realloc(read_storage, len);
+ if (realloc_storage is null) {
+ throw new Exception("realloc failed: not enough memory for read");
+ } else {
+ read_storage = realloc_storage;
+ max_sz = len;
+ }
+ _used = len;
+ read_storage[0 .. len] = read.raw_data[];
+ _reads[0].raw_data = read_storage[0 .. _used];
+ _reads[0].associateWithReader(read.reader);
+ reads.popFront();
+ }
+ }
+
+ void free() {
+ std.c.stdlib.free(read_storage);
+ std.c.stdlib.free(_reads);
+ }
+
+ BamRead[] reads() @property { return _reads[0 .. _n_reads]; }
+ BamRead* _reads;
+ size_t _reads_capa;
+ size_t _n_reads;
+
+ ubyte* read_storage;
+ size_t _used;
+ bool _low_memory;
+ }
+
+ static BamRead[] sortChunk(size_t n, BamRead[] chunk, TaskPool task_pool) {
+ version (development) {
+ StopWatch sw;
+ sw.start();
+ stderr.writeln("Sorting chunk #", n, "...");
+ }
+ auto buf = cast(BamRead*)std.c.stdlib.malloc(chunk.length * BamRead.sizeof);
+ BamRead[] tmp = buf[0 .. chunk.length];
+ scope (exit) std.c.stdlib.free(buf);
+ if (sort_by_name) {
+ mergeSort!(compareReadNames, false)(chunk, task_pool, tmp);
+ } else if (natural_sort) {
+ mergeSort!(mixedCompareReadNames, false)(chunk, task_pool, tmp);
+ } else {
+ mergeSort!(compareCoordinates, false)(chunk, task_pool, tmp);
+ }
+ version (development) {
+ stderr.writeln("Finished sorting of chunk #", n, " in ", sw.peek().seconds, "s");
+ }
+ return chunk;
+ }
+
+ void sort() {
+ auto filter = createFilterFromQuery(filter_str);
+
+ createHeader();
+
+ size_t buf_size = 16_000_000;
+ bam.setBufferSize(buf_size);
+ bam.assumeSequentialProcessing();
+
+ auto output_buffer_ptr = cast(ubyte*)std.c.stdlib.malloc(buf_size);
+ output_buffer = output_buffer_ptr[0 .. buf_size];
+ scope(exit)std.c.stdlib.free(output_buffer_ptr);
+
+ if (show_progress) {
+ stderr.writeln("Writing sorted chunks to temporary directory...");
+ bar = new shared(ProgressBar)();
+ auto reads = bam.readsWithProgress(
+ (lazy float p){ bar.update(p); }
+ );
+ auto filtered_reads = filtered(reads, filter);
+ writeSortedChunks(filtered_reads);
+ bar.finish();
+ } else {
+ auto filtered_reads = filtered(bam.reads!withoutOffsets(), filter);
+ writeSortedChunks(filtered_reads);
+ }
+
+ scope(success) {
+ if (tmpfiles.length > 1) {
+ // if length == 1, the file was moved
+ foreach (tmpfile; tmpfiles) {
+ remove(tmpfile);
+ }
+ }
+ }
+
+ if (sort_by_name)
+ mergeSortedChunks!compareReadNames();
+ else if (natural_sort)
+ mergeSortedChunks!mixedCompareReadNames();
+ else
+ mergeSortedChunks!compareCoordinates();
+ }
+
+ private void createHeader() {
+ header = bam.header;
+ header.sorting_order = (sort_by_name || natural_sort) ? SortingOrder.queryname :
+ SortingOrder.coordinate;
+ }
+
+ private size_t k; // number of sorting tasks submitted
+
+ private void writeSortedChunks(R)(R reads_) {
+ auto buf1 = UnsortedChunk(memory_limit / 2);
+ auto buf2 = UnsortedChunk(memory_limit / 2);
+ scope(exit) { buf1.free(); buf2.free(); }
+
+ version (development) {
+ StopWatch sw;
+ sw.start();
+ scope(exit) {
+ sw.stop();
+ stderr.writeln("Wrote ", num_of_chunks, " sorted chunk",
+ num_of_chunks == 1 ? "" : "s",
+ " in ", sw.peek().seconds, " seconds");
+ }
+ }
+
+ Task!(sortChunk, size_t, BamRead[], TaskPool)* sorting_task;
+
+ auto reads = reads_;
+
+ // 1) fill buf1
+ // 2) sort buf1 in parallel with filling buf2
+ // 3) dump buf1
+ // 4) sort buf2 in parallel with filling buf1
+ // ...
+ while (!reads.empty) {
+ buf1.clear();
+ version(development) {
+ stderr.writeln("Reading chunk #", k + 1);
+ StopWatch sw_inner;
+ sw_inner.start();
+ }
+ buf1.fill(&reads);
+
+ version(development)
+ stderr.writeln("Finished reading of chunk #", k + 1,
+ " in ", sw_inner.peek().seconds, "s");
+
+ BamRead[] sorted_reads;
+ if (sorting_task !is null)
+ sorted_reads = sorting_task.yieldForce();
+
+ sorting_task = task!sortChunk(k + 1, buf1.reads, task_pool);
+ task_pool.put(sorting_task);
+ ++k;
+
+ if (sorted_reads.length > 0)
+ dump(sorted_reads);
+
+ swap(buf1, buf2);
+ }
+
+ version(development) stderr.writeln("waiting for the last sorting task...");
+
+ if (sorting_task !is null)
+ dump(sorting_task.yieldForce());
+
+ // handle empty BAM file case
+ if (k == 0) {
+ ++k;
+ dump([]);
+ }
+ }
+
+ private ubyte[] output_buffer;
+
+ // if there's more than one chunk, first call to dump will be when k == 2
+ // because we first submit sorting task and only when dump previous chunk
+ private void dump(BamRead[] sorted_reads) {
+ version(development) {
+ stderr.writeln("Dumping chunk #", num_of_chunks + 1, " to disk...");
+ StopWatch sw;
+ sw.start();
+ }
+
+ int level = uncompressed_chunks ? 0 : 1;
+
+ string fn;
+
+ if (k <= 1) {
+ level = compression_level;
+ fn = output_filename;
+ } else {
+ fn = tmpFile(chunkBaseName(filename, num_of_chunks), tmpdir);
+ tmpfiles ~= fn;
+ }
+
+ auto stream = bufferedFile(fn, FileMode.OutNew, 0);
+ stream.buffer = output_buffer;
+ scope(failure) stream.close();
+
+ // if there's only one chunk, we will write straight to the output file
+ auto writer = scoped!BamWriter(stream, level, task_pool, 32_000_000);
+ writer.setFilename(fn);
+
+ writer.writeSamHeader(header);
+ writer.writeReferenceSequenceInfo(bam.reference_sequences);
+
+ foreach (read; sorted_reads)
+ writer.writeRecord(read);
+
+ writer.finish();
+
+ version(development)
+ stderr.writeln("Finished dumping of chunk #", num_of_chunks + 1,
+ " in ", sw.peek().seconds, "s");
+
+ num_of_chunks += 1;
+ }
+
+ private void mergeSortedChunks(alias comparator)() {
+
+ if (num_of_chunks <= 1) {
+ // dump() wrote it to destination already
+ return;
+ }
+
+ version(development) {
+ StopWatch sw;
+ sw.start();
+ scope(exit) {
+ sw.stop();
+ stderr.writeln("Merging took ", sw.peek().seconds, " seconds");
+ }
+ }
+
+ auto input_buf_size = min(16_000_000, memory_limit / 4 / num_of_chunks);
+ auto output_buf_size = min(64_000_000, memory_limit / 6);
+ auto stream = bufferedFile(output_filename, FileMode.OutNew,
+ output_buf_size);
+ scope(failure) stream.close();
+
+ alias ReturnType!(BamReader.readsWithProgress!withoutOffsets) AlignmentRangePB;
+ auto alignmentranges = new AlignmentRangePB[num_of_chunks];
+
+ if (show_progress) {
+ stderr.writeln("Merging sorted chunks...");
+ weights.length = num_of_chunks;
+ merging_progress.length = num_of_chunks;
+ merging_progress[] = 0.0;
+
+ bar = new shared(ProgressBar)();
+
+ foreach (i; 0 .. num_of_chunks) {
+ weights[i] = std.file.getSize(tmpfiles[i]); // set file size as weight
+ }
+
+ normalize(cast()weights);
+ }
+
+ foreach (i; 0 .. num_of_chunks) {
+ auto bamfile = new BamReader(tmpfiles[i], task_pool);
+ bamfile.setBufferSize(input_buf_size);
+ bamfile.assumeSequentialProcessing();
+ if (show_progress)
+ alignmentranges[i] = bamfile.readsWithProgress(
+ // WTF is going on here? See this thread:
+ // http://forum.dlang.org/thread/mailman.112.1341467786.31962.digitalmars-d@puremagic.com
+ (size_t j) {
+ return (lazy float progress) {
+ atomicStore(merging_progress[j], progress);
+ synchronized (bar) {
+ bar.update(dotProduct(merging_progress, weights));
+ }
+ };
+ }(i));
+ else
+ alignmentranges[i] = bamfile.readsWithProgress(null);
+ }
+
+ auto writer = scoped!BamWriter(stream, compression_level, task_pool,
+ 2 * output_buf_size);
+ writer.setFilename(output_filename);
+ scope(exit) writer.finish();
+ writer.writeSamHeader(header);
+ writer.writeReferenceSequenceInfo(bam.reference_sequences);
+
+ foreach (read; nWayUnion!comparator(alignmentranges))
+ writer.writeRecord(read);
+
+ if (show_progress)
+ bar.finish();
+ }
+
+ private {
+ SamHeader header;
+
+ string[] tmpfiles; // temporary file names
+ size_t num_of_chunks; // number of temporary files
+ }
+}
+
+int sort_main(string[] args) {
+
+ if (args.length < 2) {
+ printUsage();
+ return 0;
+ }
+
+ try {
+ string memory_limit_str = null;
+ uint n_threads = totalCPUs;
+
+ auto sorter = scoped!Sorter();
+
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "memory-limit|m", &memory_limit_str,
+ "tmpdir", &sorter.tmpdir,
+ "out|o", &sorter.output_filename,
+ "sort-by-name|n", &sort_by_name,
+ "natural-sort|N", &natural_sort,
+ "uncompressed-chunks|u", &sorter.uncompressed_chunks,
+ "compression-level|l", &sorter.compression_level,
+ "show-progress|p", &show_progress,
+ "nthreads|t", &n_threads,
+ "filter|F", &sorter.filter_str);
+
+ if (sort_by_name && natural_sort) {
+ stderr.writeln("only one of -n and -N parameters can be provided");
+ return -1;
+ }
+
+ if (sorter.output_filename is null) {
+ sorter.output_filename = setExtension(args[1], "sorted.bam");
+ }
+
+ protectFromOverwrite(args[1], sorter.output_filename);
+ sorter.tmpdir = randomSubdir(sorter.tmpdir);
+
+ if (memory_limit_str !is null) {
+ sorter.memory_limit = parseMemory(memory_limit_str);
+ if (sorter.memory_limit / max(n_threads, 1) < 100_000) {
+ throw new Exception("memory limit per thread can't be less than 100Kb");
+ }
+ }
+
+ sorter.memory_limit = (sorter.memory_limit * 5) / 6;
+
+ sorter.task_pool = new TaskPool(n_threads);
+ scope(exit) sorter.task_pool.finish();
+ sorter.bam = new BamReader(args[1], sorter.task_pool);
+ sorter.filename = args[1];
+
+ import core.memory;
+ GC.disable();
+
+ sorter.sort();
+
+ try {
+ std.file.rmdirRecurse(sorter.tmpdir);
+ } catch (FileException e) {
+ // Ignore errors removing temporary directories, due to NFS failure under load
+ // https://github.com/chapmanb/bcbio-nextgen/issues/784
+ }
+
+ return 0;
+ } catch (Throwable e) {
+ version (development) {
+ throw e;
+ } else {
+ stderr.writeln("sambamba-sort: ", e.msg);
+ }
+ return 1;
+ }
+}
+
+/// parses \d+K, \d+M, \d+G
+size_t parseMemory(string str) {
+ auto initial_str = str.idup;
+ size_t sz = 0;
+ while (!str.empty) {
+ if (isDigit(str[0]))
+ sz *= 10, sz += str[0] - '0';
+ else
+ break;
+ str = str[1 .. $];
+ }
+ if (str.empty) return sz;
+ switch (str) {
+ case "K":
+ case "KiB":
+ return sz << 10;
+ case "KB":
+ return sz * 1_000;
+ case "M":
+ case "MiB":
+ return sz << 20;
+ case "MB":
+ return sz * 1_000_000;
+ case "G":
+ case "GiB":
+ return sz << 30;
+ case "GB":
+ return sz * 1_000_000_000;
+ default:
+ throw new Exception("couldn't parse ", initial_str);
+ }
+}
+
+/// Base name of the file corresponding to chunk number $(D chunk_num)
+///
+/// Params:
+/// unsorted_fn - filename of unsorted BAM
+/// chunk_num - 0-based index of the chunk
+///
+string chunkBaseName(string unsorted_fn, size_t chunk_num) {
+ return baseName(unsorted_fn) ~ "." ~ to!string(chunk_num);
+}
diff --git a/sambamba/utils/common/bed.d b/sambamba/utils/common/bed.d
new file mode 100644
index 0000000..bb6835a
--- /dev/null
+++ b/sambamba/utils/common/bed.d
@@ -0,0 +1,151 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2013-2015 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.common.bed;
+
+import std.stdio;
+import std.algorithm;
+import std.string;
+import std.conv;
+import std.math;
+import std.array;
+import std.range;
+import std.typecons;
+
+struct Interval {
+ long beg;
+ long end;
+}
+
+Interval[] nonOverlappingIntervals(Interval[] list) {
+ if (list.length == 0)
+ return [];
+ sort!"a.beg < b.beg"(list);
+ size_t cur_position = 0;
+
+ auto cur = list[0];
+ foreach (interval; list[1 .. $]) {
+ if (cur.end >= interval.beg) {
+ cur.end = max(cur.end, interval.end);
+ } else {
+ list[cur_position++] = cur;
+ cur = interval;
+ }
+ }
+ list[cur_position++] = cur;
+ return list[0 .. cur_position];
+}
+
+alias Interval[][string] BedIndex;
+
+// TODO: rewrite this mess
+BedIndex readIntervals(string bed_filename, bool non_overlapping=true, string[]* lines=null, Tuple!(string, Interval)[]* intervals=null) {
+ BedIndex index;
+
+ auto bed = cast(string)(std.file.readText(bed_filename));
+ foreach (str; bed.splitter('\n')) {
+ auto fields = split(str);
+ if (fields.length < 2)
+ continue;
+ string chr = fields[0];
+ Interval interval;
+ if (fields.length >= 3) {
+ interval.beg = to!long(fields[1]);
+ interval.end = to!long(fields[2]);
+ } else if (fields.length >= 2) {
+ interval.beg = to!long(fields[1]);
+ interval.end = interval.beg + 1;
+ }
+
+ if (interval.beg == interval.end)
+ interval.end = interval.beg + 1;
+ if (interval.beg < interval.end) {
+ if (lines is null)
+ index[chr] ~= interval;
+ else
+ (*intervals) ~= tuple(chr, interval);
+ }
+
+ if (lines !is null) {
+ (*lines) ~= str;
+ }
+ }
+
+ if (non_overlapping) {
+ foreach (k, ref v; index) {
+ v = nonOverlappingIntervals(v);
+ }
+ }
+ return index;
+}
+
+bool hasOverlap(const(Interval[]) intervals_, Interval interval) {
+ auto intervals = intervals_[];
+ auto r = intervals.assumeSorted!"a.beg < b.beg".upperBound(Interval(interval.end - 1, -1));
+ intervals = intervals[0 .. $ - r.length];
+ auto l = intervals.assumeSorted!"a.end < b.end".lowerBound(Interval(-1, interval.beg + 1));
+ return intervals.length != l.length;
+}
+
+unittest {
+ alias Interval I;
+ BedIndex index = [
+ "1": nonOverlappingIntervals([I(5, 8), I(7, 10), I(22, 25), I(23, 24), I(14, 17)])
+ ];
+ assert( index["1"] == [I(5, 10), I(14, 17), I(22, 25)]);
+ assert(!index["1"].hasOverlap(I(11, 14)));
+ assert( index["1"].hasOverlap(I(13, 15)));
+ assert(!index["1"].hasOverlap(I(0, 4)));
+ assert(!index["1"].hasOverlap(I(0, 5)));
+ assert( index["1"].hasOverlap(I(0, 6)));
+ assert( index["1"].hasOverlap(I(9, 10)));
+ assert(!index["1"].hasOverlap(I(25, 42)));
+ assert( index["1"].hasOverlap(I(22, 23)));
+ assert(!index["1"].hasOverlap(I(22, 22)));
+ assert(!index["1"].hasOverlap(I(20, 22)));
+}
+
+import bio.bam.reader;
+public import bio.bam.region;
+
+BamRegion[] parseBed(Reader)(string bed_filename, Reader bam, bool non_overlapping=true, string[]* bed_lines=null) {
+ Tuple!(string, Interval)[] ivs;
+ auto index = sambamba.utils.common.bed.readIntervals(bed_filename, non_overlapping, bed_lines, &ivs);
+ BamRegion[] regions;
+ if (non_overlapping) {
+ foreach (reference, intervals; index) {
+ if (!bam.hasReference(reference))
+ continue;
+ auto id = bam[reference].id;
+ foreach (interval; intervals)
+ regions ~= BamRegion(cast(uint)id,
+ cast(uint)interval.beg, cast(uint)interval.end);
+ }
+ std.algorithm.sort(regions);
+ } else {
+ foreach (t; ivs) {
+ if (!bam.hasReference(t[0]))
+ continue;
+ auto id = bam[t[0]].id;
+ regions ~= BamRegion(cast(uint)id,
+ cast(uint)t[1].beg, cast(uint)t[1].end);
+ }
+ }
+ return regions;
+}
diff --git a/sambamba/utils/common/file.d b/sambamba/utils/common/file.d
new file mode 100644
index 0000000..ac3418b
--- /dev/null
+++ b/sambamba/utils/common/file.d
@@ -0,0 +1,10 @@
+module sambamba.utils.common.file;
+import std.stream;
+import std.stdio;
+
+BufferedFile bufferedFile(string fn, std.stream.FileMode mode, size_t buffer_size=8192) {
+ if (fn == "-")
+ return new BufferedFile(std.stdio.stdout.fileno, mode, buffer_size);
+ else
+ return new BufferedFile(fn, mode, buffer_size);
+}
diff --git a/sambamba/utils/common/filtering.d b/sambamba/utils/common/filtering.d
new file mode 100644
index 0000000..d60e64d
--- /dev/null
+++ b/sambamba/utils/common/filtering.d
@@ -0,0 +1,356 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2013-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.common.filtering;
+
+import bio.bam.splitter;
+import bio.bam.region;
+
+import sambamba.utils.common.queryparser;
+import sambamba.utils.common.intervaltree;
+import std.algorithm;
+import std.stdio;
+import std.random;
+import std.parallelism;
+import std.range;
+import std.algorithm;
+import std.array;
+import std.string : representation;
+
+auto filtered(R)(R reads, Filter f) {
+ return reads.zip(f.repeat()).filter!q{a[1].accepts(a[0])}.map!"a[0]"();
+}
+
+Filter createFilterFromQuery(string query) {
+ if (query == "")
+ return new NullFilter();
+ auto query_grammar = new QueryGrammar();
+ auto node = query_grammar.parse(query);
+ auto condition_node = cast(ConditionNode) node;
+ if (condition_node is null) {
+ stderr.writeln("filter string must represent a condition");
+ return null;
+ }
+ return condition_node.condition;
+}
+
+/**
+ Set of filters for alignments.
+ All share a common interface and can be easily combined.
+*/
+
+import std.regex;
+import std.algorithm;
+import std.conv;
+import bio.bam.read;
+import bio.bam.tagvalue;
+import bio.bam.validation.alignment;
+
+/// Common interface for all filters
+interface Filter {
+ bool accepts(ref BamRead a);
+}
+
+/// Filter which accepts all alignments
+final class NullFilter : Filter {
+ bool accepts(ref BamRead a) {
+ return true;
+ }
+}
+
+/// Validating filter
+final class ValidAlignmentFilter : Filter {
+
+ bool accepts(ref BamRead a) {
+ return isValid(a);
+ }
+}
+
+/// Intersection of two filters
+final class AndFilter : Filter {
+ private Filter _a, _b;
+
+ this(Filter a, Filter b) { _a = a; _b = b; }
+
+ bool accepts(ref BamRead a) {
+ return _a.accepts(a) && _b.accepts(a);
+ }
+}
+
+/// Union of two filters
+final class OrFilter : Filter {
+ private Filter _a, _b;
+
+ this(Filter a, Filter b) { _a = a, _b = b; }
+
+ bool accepts(ref BamRead a) {
+ return _a.accepts(a) || _b.accepts(a);
+ }
+}
+
+/// Negation of a filter
+final class NotFilter : Filter {
+ private Filter _a;
+
+ this(Filter a) { _a = a; }
+ bool accepts(ref BamRead a) {
+ return !_a.accepts(a);
+ }
+}
+
+/// Checks if read overlaps one of regions
+final class BedFilter : Filter {
+ private {
+ alias IntervalTree!(void, uint) intervalTree;
+ alias IntervalTreeNode!(void, uint) intervalTreeNode;
+ intervalTree[] trees_;
+ }
+
+ this(BamRegion[] bed) {
+ // assumes that regions are sorted
+ trees_.length = bed.back.ref_id + 1;
+
+ size_t start_index = 0;
+ size_t end_index = start_index;
+
+ intervalTreeNode[] intervals;
+
+ while (start_index < bed.length) {
+ while (end_index < bed.length && bed[end_index].ref_id == bed[start_index].ref_id)
+ ++end_index;
+
+ intervals.length = end_index - start_index;
+ foreach (i; 0 .. intervals.length) {
+ auto start = bed[start_index + i].start;
+ auto stop = bed[start_index + i].end;
+ intervals[i] = new intervalTreeNode(start, stop);
+ }
+
+ trees_[bed[start_index].ref_id] = new intervalTree(intervals);
+ start_index = end_index;
+ }
+ }
+
+ bool accepts(ref BamRead a) {
+ if (a.ref_id < 0 || a.ref_id >= trees_.length || trees_[a.ref_id] is null)
+ return false;
+ auto start = a.position;
+ auto end = start + a.basesCovered();
+ foreach (overlap; trees_[a.ref_id].eachOverlap(start, end)) {
+ return true;
+ }
+ return false;
+ }
+}
+
+/// Filter alignments which has $(D flagname) flag set
+final class FlagFilter(string flagname) : Filter {
+ bool accepts(ref BamRead a) {
+ mixin("return a." ~ flagname ~ ";");
+ }
+}
+
+final class ChimericFilter : Filter {
+ bool accepts(ref BamRead a) {
+ return a.is_paired && !a.is_unmapped && !a.mate_is_unmapped &&
+ a.ref_id != a.mate_ref_id;
+ }
+}
+
+float avg_base_quality(BamRead r) {
+ return reduce!"a+b"(0.0f, r.base_qualities)/r.sequence_length;
+}
+
+/// Filtering integer fields
+final class IntegerFieldFilter(string op) : Filter {
+ private long _value;
+ private string _fieldname;
+ this(string fieldname, long value) {
+ _fieldname = fieldname;
+ _value = value;
+ }
+ bool accepts(ref BamRead a) {
+ switch(_fieldname) {
+ case "ref_id": mixin("return a.ref_id " ~ op ~ "_value;");
+ case "position": mixin("return a.position " ~ op ~ "_value;");
+ case "mapping_quality": mixin("return a.mapping_quality " ~ op ~ "_value;");
+ case "avg_base_quality": mixin("return a.avg_base_quality " ~ op ~ "_value;");
+ case "sequence_length": mixin("return a.sequence_length " ~ op ~ "_value;");
+ case "mate_ref_id": mixin("return a.mate_ref_id " ~ op ~ "_value;");
+ case "mate_position": mixin("return a.mate_position " ~ op ~ "_value;");
+ case "template_length": mixin("return a.template_length " ~ op ~ "_value;");
+ default: throw new Exception("unknown integer field '" ~ _fieldname ~ "'");
+ }
+ }
+}
+
+final class TagExistenceFilter(string op) : Filter {
+ static assert(op == "==" || op == "!=");
+ private string _tagname;
+ private static bool _should_exist = op == "!=";
+ this(string tagname, typeof(null) dummy) {
+ _tagname = tagname;
+ }
+ bool accepts(ref BamRead a) {
+ auto v = a[_tagname];
+ if (_should_exist)
+ return !v.is_nothing;
+ else
+ return v.is_nothing;
+ }
+}
+
+/// Filtering integer tags
+final class IntegerTagFilter(string op) : Filter {
+ private long _value;
+ private string _tagname;
+
+ this(string tagname, long value) {
+ _tagname = tagname;
+ _value = value;
+ }
+
+ bool accepts(ref BamRead a) {
+ auto v = a[_tagname];
+ if (!v.is_integer && !v.is_float)
+ return false;
+ if (v.is_float) {
+ mixin(`return cast(float)v` ~ op ~ `_value;`);
+ } else {
+ mixin(`return cast(long)v` ~ op ~ `_value;`);
+ }
+ }
+}
+
+/// Filtering string fields
+final class StringFieldFilter(string op) : Filter {
+ private string _value;
+ private string _fieldname;
+ this(string fieldname, string value) {
+ _fieldname = fieldname;
+ _value = value;
+ }
+ bool accepts(ref BamRead a) {
+ switch(_fieldname) {
+ case "read_name": mixin("return a.name " ~ op ~ " _value;");
+ case "sequence": mixin("return cmp(a.sequence, _value) " ~ op ~ " 0;");
+ case "cigar": mixin("return a.cigarString() " ~ op ~ " _value;");
+ case "strand": mixin("return a.strand " ~ op ~ " _value[0];"); // FIXME: a separate filter would be cleaner
+ case "ref_name": mixin("return a.ref_name " ~ op ~ " _value;");
+ case "mate_ref_name": mixin("return a.mate_ref_name " ~ op ~ " _value;");
+ default: throw new Exception("unknown string field '" ~ _fieldname ~ "'");
+ }
+ }
+}
+
+/// Filtering string and character tags
+final class StringTagFilter(string op) : Filter {
+ private string _value;
+ private string _tagname;
+
+ this(string tagname, string value) {
+ _tagname = tagname;
+ _value = value;
+ }
+
+ bool accepts(ref BamRead a) {
+ auto v = a[_tagname];
+ if (v.is_string) {
+ mixin(`return cast(string)v` ~ op ~ `_value;`);
+ } else if (v.is_character) {
+ if (_value.length != 1)
+ return false; // doesn't make sense to compare char with string
+ mixin(`return cast(char)v` ~ op ~ `_value[0];`);
+ } else {
+ return false;
+ }
+ }
+}
+
+/// Filtering string fields with a regular expression
+final class RegexpFieldFilter : Filter {
+ private string _fieldname;
+ private Regex!char _pattern;
+
+ this(string fieldname, Regex!char pattern) {
+ _fieldname = fieldname;
+ _pattern = pattern;
+ }
+
+ bool accepts(ref BamRead a) {
+ switch(_fieldname) {
+ case "read_name": return !match(a.name, cast()_pattern).empty;
+ case "sequence": return !match(to!string(a.sequence), cast()_pattern).empty;
+ case "cigar": return !match(a.cigarString(), cast()_pattern).empty;
+ default: throw new Exception("unknown string field '" ~ _fieldname ~ "'");
+ }
+ }
+}
+
+/// Filtering string tags with a regular expression
+final class RegexpTagFilter : Filter {
+ private string _tagname;
+ private Regex!char _pattern;
+
+ this(string tagname, Regex!char pattern) {
+ _tagname = tagname;
+ _pattern = pattern;
+ }
+
+ bool accepts(ref BamRead a) {
+ auto v = a[_tagname];
+ if (!v.is_string) {
+ return false;
+ }
+ return !match(cast(string)v, cast()_pattern).empty;
+ }
+}
+
+final class SubsampleFilter : Filter {
+ private ulong _threshold;
+ private ulong _seed;
+
+ this(double subsample_frac, ulong seed) {
+ _threshold = (0x100000000UL * subsample_frac).to!ulong;
+ _seed = seed;
+ }
+
+ // FNV-1a algorithm
+ private ulong simpleHash(string s) const {
+ ulong h = 14695981039346656037UL;
+ auto salt = (cast(ubyte*)(&_seed))[0 .. 8];
+ foreach (b; chain(s.representation, salt)) {
+ h ^= b;
+ h *= 1099511628211UL;
+ }
+ return h;
+ }
+ /*
+ uint h = 0;
+ foreach (char c; s)
+ h = (h << 5) - h + c;
+ return h + _seed;
+ }
+ */
+
+ bool accepts(ref BamRead read) const {
+ auto h = simpleHash(read.name);
+ return (h&0xFFFFFFFFUL) < _threshold;
+ }
+}
diff --git a/sambamba/utils/common/intervaltree.d b/sambamba/utils/common/intervaltree.d
new file mode 100644
index 0000000..425e4b2
--- /dev/null
+++ b/sambamba/utils/common/intervaltree.d
@@ -0,0 +1,153 @@
+// based on https://github.com/ekg/intervaltree
+module sambamba.utils.common.intervaltree;
+
+import std.range;
+import std.algorithm;
+import std.array;
+import std.conv;
+
+class IntervalTreeNode(T, pos_t) {
+ static if (is(T == void)) {
+ pos_t start;
+ pos_t stop;
+
+ this(pos_t start, pos_t stop) {
+ this.start = start;
+ this.stop = stop;
+ }
+
+ override string toString() const {
+ return "(" ~ start.to!string ~ " .. " ~ stop.to!string ~ ")";
+ }
+ } else {
+ pos_t start;
+ pos_t stop;
+ T value;
+
+ this(pos_t start, pos_t stop, T value) {
+ this.start = start;
+ this.stop = stop;
+ this.value = value;
+ }
+
+ override string toString() const {
+ return "(" ~ start.to!string ~ " .. " ~ stop.to!string ~
+ ", " ~ value.to!string ~ ")";
+ }
+ }
+}
+
+class IntervalTree(T, pos_t) {
+ alias IntervalTreeNode!(T, pos_t) interval;
+ alias IntervalTree!(T, pos_t) intervalTree;
+
+ void print(int depth=0) {
+ import std.stdio;
+ writeln(repeat(' ', depth), "INTERVALS: ", intervals);
+ if (left !is null) {
+ writeln(repeat(' ', depth), "LEFT");
+ left.print(depth + 4);
+ }
+ if (right !is null) {
+ writeln(repeat(' ', depth), "RIGHT");
+ right.print(depth + 4);
+ }
+ }
+
+ interval[] intervals;
+ intervalTree left;
+ intervalTree right;
+ pos_t center;
+
+ this() {
+ left = right = null;
+ center = 0;
+ }
+
+ this(ref interval[] ivals, uint depth=16, uint minBucket=2,//64,
+ int leftExtent=0, int rightExtent=0)
+ {
+ left = right = null;
+
+ --depth;
+ if (depth == 0 || ivals.length < minBucket)
+ {
+ sort!((a, b) => a.start < b.start)(ivals[]);
+ intervals = ivals.dup;
+ } else {
+ if (leftExtent == 0 && rightExtent == 0) {
+ sort!((a, b) => a.start < b.start)(ivals[]);
+ }
+
+ int leftP = 0;
+ int rightP = 0;
+ int centerP = 0;
+
+ if (leftExtent != 0 || rightExtent != 0) {
+ leftP = leftExtent;
+ rightP = rightExtent;
+ } else {
+ leftP = ivals.front.start;
+ rightP = ivals.map!(iv => iv.stop).reduce!max;
+ }
+
+ centerP = ivals[ivals.length / 2].start;
+ center = centerP;
+
+ interval[] lefts;
+ interval[] rights;
+
+ foreach (iv; ivals) {
+ if (iv.stop <= center)
+ lefts ~= iv;
+ else if (iv.start > center)
+ rights ~= iv;
+ else intervals ~= iv;
+ }
+
+ if (lefts.length > 0)
+ left = new intervalTree(lefts, depth, minBucket,
+ leftP, centerP);
+
+ if (rights.length > 0)
+ right = new intervalTree(rights, depth, minBucket,
+ centerP, rightP);
+ }
+ }
+
+ static struct OverlapWalker {
+ pos_t start;
+ pos_t stop;
+ intervalTree tree;
+ int opApply(scope int delegate(ref interval) dg) {
+ int result = 0;
+ if (!tree.intervals.empty && !(stop <= tree.intervals.front.start)) {
+ foreach (ref iv; tree.intervals)
+ if (iv.stop > start && iv.start < stop) {
+ result = dg(iv);
+ if (result != 0)
+ return result;
+ }
+ }
+
+ if (tree.left !is null && start < tree.center) {
+ result = tree.left.eachOverlap(start, stop).opApply(dg);
+ if (result != 0)
+ return result;
+ }
+
+ if (tree.right !is null && stop >= tree.center) {
+ result = tree.right.eachOverlap(start, stop).opApply(dg);
+ if (result != 0)
+ return result;
+ }
+
+ return result;
+ }
+ }
+
+ auto eachOverlap(pos_t start=pos_t.min, pos_t stop=pos_t.max)
+ {
+ return OverlapWalker(start, stop, this);
+ }
+}
diff --git a/sambamba/utils/common/ldc_gc_workaround.d b/sambamba/utils/common/ldc_gc_workaround.d
new file mode 100644
index 0000000..39b4aaf
--- /dev/null
+++ b/sambamba/utils/common/ldc_gc_workaround.d
@@ -0,0 +1,81 @@
+/// Remove address ranges related to system libraries, from GC scanning.
+/// That makes a huge speed difference in case of frequent allocations.
+module sambamba.utils.common.ldc_gc_workaround;
+
+import std.stdio;
+import std.format;
+import std.algorithm;
+
+import core.memory;
+
+/// Shared static constructor does the job, no need to do any calls manually.
+shared static this() {
+ version(LDC) {
+ version(Linux) {
+ removeExtraGcRanges();
+ }
+ }
+}
+
+/// A path is excluded from GC scanning if it contains any of these substrings.
+immutable defaultExclusionList = ["/libc-", "/ld-", "/libpthread-", "/librt-", "/libm-", "/libgcc_s", "/libdl-"];
+
+/// On start, LDC parses /proc/self/maps file
+/// and adds every range with writable permissions to GC.
+/// However, standard libraries don't contain any pointers to D objects,
+/// and garbage collector spends a lot of time dealing with these ranges,
+/// while this is completely unnecessary.
+///
+/// This function scans /proc/self/maps again and excludes ranges
+/// that come from libc, ld, libpthread, librt, and libm.
+/// You can pass your own exclusion list instead of the default one.
+void removeExtraGcRanges(const char[][] exclusionList=defaultExclusionList) {
+
+ debug {
+ writeln("[DEBUG] removing extra GC ranges...");
+ }
+
+ version(Posix) {
+ foreach (line; File("/proc/self/maps").byLine())
+ {
+ ulong start;
+ ulong end;
+ char[] permissions;
+ ulong offset;
+ char[] dev;
+ ulong inode;
+ char[] path;
+ auto l = line.dup;
+
+ formattedRead(l, "%x-%x %s %x %s %d %s", &start, &end, &permissions,
+ &offset, &dev, &inode, &path);
+
+ if (permissions[1] == 'w') {
+
+ // exclude empty entries
+ if (path.length == 0) {
+ GC.removeRange(cast(void*)start);
+ }
+
+ bool is_system_lib = false;
+ foreach (substr; exclusionList) {
+ if (path.canFind(substr)) {
+
+ debug {
+ writeln("removing path ", path);
+ }
+
+ GC.removeRange(cast(void*)start);
+ is_system_lib = true;
+ break;
+ }
+ }
+
+ debug {
+ if (!is_system_lib)
+ writeln("skipping path ", path);
+ }
+ }
+ }
+ }
+}
diff --git a/sambamba/utils/common/overwrite.d b/sambamba/utils/common/overwrite.d
new file mode 100644
index 0000000..d714ef3
--- /dev/null
+++ b/sambamba/utils/common/overwrite.d
@@ -0,0 +1,37 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2014 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.common.overwrite;
+
+import std.exception;
+import std.path;
+
+class OverwriteException : Exception {
+ this(string output_fn) {
+ super("Specified output filename " ~ output_fn ~
+ " clashes with one of input file names. Exiting.");
+ }
+}
+
+void protectFromOverwrite(string input_filename, string output_filename) {
+ auto input_fn = buildNormalizedPath(input_filename);
+ auto output_fn = buildNormalizedPath(output_filename);
+ if (input_fn.filenameCmp(output_fn) == 0)
+ throw new OverwriteException(output_fn);
+}
diff --git a/sambamba/utils/common/pratt_parser.d b/sambamba/utils/common/pratt_parser.d
new file mode 100644
index 0000000..38b944e
--- /dev/null
+++ b/sambamba/utils/common/pratt_parser.d
@@ -0,0 +1,467 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2013 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.common.pratt_parser;
+
+import std.string;
+import std.exception;
+import std.conv;
+import std.algorithm;
+import std.ascii;
+
+struct SourcePosition {
+ size_t position;
+ size_t line;
+ size_t column;
+}
+
+class PrattParser(T, alias WSSkipper=DefaultWSSkipper) {
+
+ private {
+ alias Token!(T, WSSkipper) Tok;
+ alias SymbolDict!(T, WSSkipper) Dict;
+ alias PrattParser!(T, WSSkipper) Parser;
+ alias TokenRange!(T, WSSkipper) Range;
+ }
+
+ this(string str, Dict symbols) {
+ this.str = str;
+ token_range = Range(str, symbols);
+ token = next();
+ }
+
+ T parse(int rbp=0) {
+ prev_token = token;
+ if (!prev_token_initialized) {
+ prev_token_initialized = true;
+ }
+ token = next();
+
+ T left = prev_token.nud(this);
+ while (rbp < token.lbp) {
+ prev_token = token;
+ token = next();
+ left = prev_token.led(this, left);
+ }
+ return left;
+ }
+
+ auto next_token() {
+ return token;
+ }
+
+ string next_token_as_string() @property const {
+ return str[token.start_position .. token.end_position];
+ }
+
+ Parser advance() {
+ token = next();
+ return this;
+ }
+
+ Parser advance(string s) {
+ if (next_token_as_string() != s) {
+ throw new Exception("unexpected character at position " ~ to!string(current_position.line) ~ ":" ~
+ to!string(current_position.column));
+ }
+ token = next();
+ return this;
+ }
+
+ @property SourcePosition current_position() const {
+ SourcePosition sp;
+ auto tok = token_initialized ? token : prev_token;
+ sp.position = prev_token_initialized ? tok.start_position : 0;
+ sp.line = token_range.current_line;
+ sp.column = sp.position - token_range.last_new_line + 1;
+ return sp;
+ }
+
+ @property string code() const { return str; }
+
+private:
+ string str;
+
+ Range token_range;
+ Tok token = void;
+ Tok prev_token = void;
+ bool token_initialized = false;
+ bool prev_token_initialized = false;
+
+ auto next() {
+ auto token = token_range.front();
+ if (!token_initialized) {
+ token_initialized = true;
+ }
+ token_range.popFront();
+ return token;
+ }
+}
+
+class Symbol(T, alias WSSkipper=DefaultWSSkipper) {
+
+ alias size_t delegate(in string str, size_t pos) TokenScanner;
+ alias T delegate(in string str) TokenParser;
+ alias PrattParser!(T, WSSkipper) Parser;
+
+ private TokenScanner scanner;
+ private TokenParser parser;
+
+ string id;
+ int lbp;
+ T delegate(Parser) nud;
+ T delegate(Parser, T) led;
+
+ this(string id, int lbp=0) {
+ this.id = id;
+ this.lbp = lbp;
+ }
+
+ size_t scan(in string str, size_t pos) const {
+ if (scanner) {
+ return scanner(str, pos);
+ } else {
+ size_t len = id.length;
+ for (size_t i = 0; i < len; ++i) {
+ if (i + pos >= str.length || id[i] != str[i + pos])
+ return pos;
+ }
+ return pos + len;
+ }
+ }
+
+ T parse(in string str) const {
+ if (parser) {
+ return parser(str);
+ } else {
+ T obj;
+ return obj;
+ }
+ }
+
+ bool has_scanner() @property const { return scanner !is null; }
+ bool has_parser() @property const { return parser !is null; }
+
+ Symbol setScanner(TokenScanner s) {
+ scanner = s;
+ return this;
+ }
+
+ Symbol setParser(TokenParser p) {
+ parser = p;
+ return this;
+ }
+}
+
+class SymbolDict(T, alias WSSkipper) {
+ alias Symbol!(T, WSSkipper) Sym;
+ private Sym[string] dict;
+ private string end_id_;
+
+ this(string end_id) {
+ this.end_id_ = end_id;
+ dict[end_id] = new Sym(end_id, int.min);
+ }
+
+ Sym opIndex(string id) {
+ return dict[id];
+ }
+
+ Sym opIndexAssign(Sym sym, string id) {
+ dict[id] = sym;
+ return sym;
+ }
+
+ bool opBinaryRight(string op)(string id) if (op == "in") {
+ return ((id in dict) !is null);
+ }
+
+ @property auto values() { return dict.byValue(); }
+ @property Sym end_symbol() { return dict[end_id_]; }
+ @property string end_id() { return end_id_; }
+}
+
+struct Token(T, alias WSSkipper=DefaultWSSkipper) {
+ private alias Symbol!(T, WSSkipper) Sym;
+ private alias PrattParser!(T, WSSkipper) Parser;
+
+ private Sym symbol_;
+ size_t start_position;
+ size_t length;
+ T value = void;
+ bool has_value = false;
+
+ this(Sym sym, size_t start=0, size_t end=0) {
+ symbol_ = sym;
+ start_position = start;
+ length = end - start;
+ }
+
+ this(Sym sym, T value, size_t start=0, size_t end=0) {
+ this(sym, start, end);
+ this.value = value;
+ has_value = true;
+ }
+
+ @property string id() const { return symbol_.id; }
+ @property Sym symbol() { return symbol_; }
+ @property int lbp() const { return symbol_.lbp; }
+ @property size_t end_position() const { return start_position + length; }
+
+ T nud(Parser parser) {
+ if (has_value) return value;
+ if (symbol_.nud is null) {
+ throw new Exception("parsing error near line " ~ to!string(parser.current_position.line)
+ ~ ": expected prefix operator");
+ }
+ return symbol_.nud(parser);
+ }
+
+ T led(Parser parser, T left) {
+ if (symbol_.led is null) {
+ throw new Exception("parsing error near line " ~ to!string(parser.current_position.line)
+ ~ ": expected infix/postfix operator");
+ }
+ return symbol_.led(parser, left);
+ }
+}
+
+struct TokenRange(T, alias WSSkipper) {
+
+ private alias Symbol!(T, WSSkipper) Sym;
+ private alias PrattParser!(T, WSSkipper) Parser;
+ private alias SymbolDict!(T, WSSkipper) Dict;
+ private alias Token!(T, WSSkipper) Tok;
+
+private:
+ string str;
+ Dict symbols;
+ size_t start;
+ size_t end;
+ Sym match;
+ bool match_found;
+ size_t last_new_line_;
+ size_t current_line_;
+public:
+
+ @property size_t current_line() const { return current_line_; }
+ @property size_t last_new_line() const { return last_new_line_; }
+
+ this(string str_, Dict symbols_) {
+ str = str_;
+ symbols = symbols_;
+ start = end = last_new_line_ = 0;
+ current_line_ = 1;
+ popFront();
+ }
+
+ bool empty() {
+ return false;
+ }
+
+ void popFront() {
+ WSSkipper(str, start, last_new_line_, current_line_);
+
+ if (start < str.length) {
+ end = start;
+ match_found = false;
+ foreach (sym; symbols.values) {
+ size_t p = sym.scan(str, start);
+
+ if (p > end || (match_found && sym.lbp > match.lbp && p == end)) {
+ match = sym;
+ match_found = true;
+ end = p;
+ }
+ }
+ if (!match_found) {
+ throw new Exception("invalid symbol in input stream at position " ~ to!string(start));
+ }
+ }
+ }
+
+ auto front() {
+ if (start >= str.length) {
+ return Tok(symbols.end_symbol);
+ }
+ size_t old_start = start;
+ start = end;
+
+ if (match.has_parser) {
+ return Tok(match, match.parse(str[old_start .. end]), old_start, end);
+ } else {
+ return Tok(match, old_start, end);
+ }
+ }
+}
+
+private struct keep_symbol_lbp_t {}
+static keep_symbol_lbp_t keep_symbol_lbp;
+
+void DefaultWSSkipper(const char[] str, ref size_t start,
+ ref size_t last_new_line,
+ ref size_t current_line)
+{
+ while (start < str.length && std.ascii.isWhite(str[start])) {
+ if (str[start] == '\n') {
+ last_new_line = start;
+ ++current_line;
+ }
+ ++start;
+ }
+};
+
+class Grammar(T, alias WSSkipper=DefaultWSSkipper) {
+ protected alias Symbol!(T, WSSkipper) Sym;
+ protected alias PrattParser!(T, WSSkipper) Parser;
+ protected alias SymbolDict!(T, WSSkipper) Dict;
+
+ protected Dict symbols_;
+
+ this(string end_id) {
+ symbols_ = new Dict(end_id);
+ size_t delegate(in string, size_t) scanner = (in string s, size_t pos) { return pos; };
+ symbols_[end_id].setScanner(scanner);
+ }
+
+ auto addSymbolToDict(string sym, int lbp=0) {
+ if (sym in symbols_) {
+ auto s = symbols_[sym];
+ s.lbp = max(s.lbp, lbp);
+ return s;
+ } else {
+ auto s = new Sym(sym, lbp);
+ return symbols_[sym] = s;
+ }
+ }
+
+ struct Prefix {
+ alias T delegate(T) handler_type;
+ alias T delegate(Parser) func_type;
+ }
+
+ struct Postfix {
+ alias T delegate(T) handler_type;
+ alias T delegate(Parser, T) func_type;
+ }
+
+ struct LeftAssociative {
+ alias T delegate(T, T) handler_type;
+ alias T delegate(Parser, T) func_type;
+ }
+
+ struct RightAssociative {
+ alias T delegate(T, T) handler_type;
+ alias T delegate(Parser, T) func_type;
+ }
+
+ private static void setBehaviour(Semantics)(Sym sym, int rbp, Semantics.handler_type func) {
+ static if (is (Semantics == Prefix))
+ sym.nud = (Parser p) { return func(p.parse(rbp)); };
+ else static if (is (Semantics == Postfix))
+ sym.led = (Parser p, T left) { return func(left); };
+ else static if (is (Semantics == LeftAssociative))
+ sym.led = (Parser p, T left) { return func(left, p.parse(rbp)); };
+ else static if (is (Semantics == RightAssociative))
+ sym.led = (Parser p, T left) { return func(left, p.parse(rbp - 1)); };
+ else
+ static assert(0, "expected Prefix | Postfix | LeftAssociative | RightAssociative");
+ }
+
+ private static void setBehaviour(Semantics)(Sym sym, Semantics.handler_type func) {
+ setBehaviour!(Semantics)(sym, sym.lbp, func);
+ }
+
+ auto prefix(string op, int binding_power, T delegate(T) handler) {
+ auto sym = addSymbolToDict(op, binding_power);
+ setBehaviour!(Prefix)(sym, binding_power, handler);
+ return sym;
+ }
+
+ auto prefix(string op, int binding_power, T delegate(T) handler, keep_symbol_lbp_t) {
+ auto sym = addSymbolToDict(op);
+ setBehaviour!(Prefix)(sym, binding_power, handler);
+ return sym;
+ }
+
+ private template make_fix(string name, string semantics) {
+ mixin("auto " ~ name ~ "(string op, int binding_power, " ~ semantics ~ ".handler_type handler) {
+ auto sym = addSymbolToDict(op, binding_power);
+ setBehaviour!(" ~ semantics ~ ")(sym, binding_power, handler);
+ return sym;
+ }");
+ }
+
+ mixin make_fix!("prefix", "Prefix");
+ mixin make_fix!("postfix", "Postfix");
+ mixin make_fix!("infix", "LeftAssociative");
+ mixin make_fix!("infix_r", "RightAssociative");
+
+ auto brackets(string ob, string cb, int binding_power, T delegate(T) handler=null) {
+ auto open_sym = addSymbolToDict(ob, binding_power);
+ addSymbolToDict(cb, 0);
+ if (handler is null) {
+ handler = (T val) { return val; };
+ }
+ open_sym.nud = (Parser p) {
+ T val = p.parse(0);
+ p.advance(cb);
+ return handler(val);
+ };
+ return open_sym;
+ }
+
+ T parse(string text) {
+ auto p = new Parser(text, symbols);
+ return p.parse();
+ }
+
+ @property Dict symbols() { return symbols_; }
+}
+
+unittest {
+
+ class Calculator : Grammar!int {
+ this() {
+ super("(end)");
+ addSymbolToDict("(number)", 0).setScanner(
+ (in string str, size_t pos) {
+ size_t i = pos;
+ while (i < str.length && std.ascii.isDigit(str[i]))
+ ++i;
+ return i;
+ }).setParser(
+ (in string str) {
+ return to!int(str);
+ });
+ infix("+", 10, (int a, int b){ return a + b;});
+ infix("-", 10, (int a, int b){ return a - b;});
+ infix("*", 20, (int a, int b){ return a * b;});
+ infix("/", 20, (int a, int b){ return a / b;});
+ prefix("+", 100, (int a){ return a; }, keep_symbol_lbp);
+ prefix("-", 100, (int a){ return -a;}, keep_symbol_lbp);
+ brackets("(", ")", int.max);
+ }
+ }
+
+ auto calc = new Calculator();
+ assert(calc.parse("2 + 3 * (4 - 5)") == -1);
+ assert(calc.parse("2 * (3 + 2) / 5") == 2);
+ assert(calc.parse("36 / (-2 + 2 * (2 + 3) * (1 + 1))") == 2);
+}
diff --git a/sambamba/utils/common/progressbar.d b/sambamba/utils/common/progressbar.d
new file mode 100644
index 0000000..99e8a7b
--- /dev/null
+++ b/sambamba/utils/common/progressbar.d
@@ -0,0 +1,83 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2013 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+/** module for showing progressbar */
+module sambamba.utils.common.progressbar;
+
+import std.stdio;
+import std.range;
+import std.numeric;
+import core.atomic;
+
+/// Common interface for all progressbars.
+shared interface IProgressBar {
+ /// Update percentage
+ void update(lazy float percentage);
+ /// Indicate that the process is finished
+ void finish();
+}
+
+/// [==================> ]
+shared class ProgressBar : IProgressBar {
+
+ /// Create a progress bar which will be redrawn every $(D n) update calls,
+ /// and its width will be $(D width) characters.
+ this(size_t n=16384, size_t width=80) {
+ _n = n;
+ _width = width;
+ draw(0.0);
+ }
+
+ void update(lazy float percentage) {
+ if (_k == _n) {
+ redraw(percentage);
+ _k = 0;
+ } else {
+ _k.atomicOp!"+="(1);
+ }
+ }
+
+ void finish() {
+ redraw(1.0);
+ stderr.writeln();
+ }
+
+ private {
+ size_t _n;
+ size_t _k;
+ size_t _width;
+
+ void draw(float percentage) {
+ auto progress = cast(int)((_width - 2) * percentage + 0.5);
+ if (progress == 0) {
+ stderr.write("[", repeat(' ', _width - 2), "]");
+ } else if (progress >= _width - 2) {
+ stderr.write("[", repeat('=', _width - 2), "]");
+ } else {
+ stderr.write("[", repeat('=', progress - 1), ">",
+ repeat(' ', (_width - 2) - progress), "]");
+ }
+ }
+
+ void redraw(float percentage) {
+ stderr.write('\r');
+ draw(percentage);
+ }
+ }
+}
diff --git a/sambamba/utils/common/queryparser.d b/sambamba/utils/common/queryparser.d
new file mode 100644
index 0000000..b78f5ca
--- /dev/null
+++ b/sambamba/utils/common/queryparser.d
@@ -0,0 +1,491 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.common.queryparser;
+import sambamba.utils.common.filtering;
+import sambamba.utils.common.pratt_parser;
+
+import std.array;
+import std.regex;
+import std.algorithm;
+import std.conv;
+import std.ascii;
+import std.exception;
+
+interface Node {
+ string toString() const;
+}
+
+final class TagNameNode : Node {
+ string tagname;
+ this(string tagname) {
+ this.tagname = tagname;
+ }
+
+ override string toString() const {
+ return "[" ~ tagname ~ "]";
+ }
+}
+
+final class NullValueNode : Node {
+ static auto value = null;
+ override string toString() const {
+ return "null";
+ }
+}
+
+final class IntegerNode : Node {
+ long value;
+ this(long value) {
+ this.value = value;
+ }
+ override string toString() const {
+ return to!string(value);
+ }
+}
+
+final class IntegerFieldNode : Node {
+ string fieldname;
+ this(string fieldname) {
+ this.fieldname = fieldname;
+ }
+ override string toString() const {
+ return fieldname;
+ }
+}
+
+final class StringNode : Node {
+ string value;
+ this(string value) {
+ this.value = value;
+ }
+ override string toString() const {
+ return "'" ~ replace(value, "'", "\\'") ~ "'";
+ }
+}
+
+final class StringFieldNode : Node {
+ string fieldname;
+ this(string fieldname) {
+ this.fieldname = fieldname;
+ }
+ override string toString() const {
+ return fieldname;
+ }
+}
+
+final class RegexpNode : Node {
+ private string _pattern;
+ private string _options;
+ Regex!char regexp;
+ this(string pattern, string options) {
+ _pattern = pattern;
+ _options = options;
+ regexp = regex(_pattern, _options);
+ }
+
+ override string toString() const {
+ return "/" ~ replace(_pattern, "/", "\\/") ~ "/" ~ _options;
+ }
+}
+
+abstract class ConditionNode : Node {
+ Filter condition;
+ override abstract string toString() const;
+}
+
+final class RegexpFieldConditionNode : ConditionNode {
+ private StringFieldNode _fieldnode;
+ private RegexpNode _regexpnode;
+
+ this(StringFieldNode field, RegexpNode regexp) {
+ _fieldnode = field;
+ _regexpnode = regexp;
+ condition = new RegexpFieldFilter(_fieldnode.fieldname, _regexpnode.regexp);
+ }
+
+ override string toString() const {
+ return _fieldnode.toString ~ " =~ " ~ _regexpnode.toString();
+ }
+}
+
+final class RegexpTagConditionNode : ConditionNode {
+ private TagNameNode _tagnode;
+ private RegexpNode _regexpnode;
+
+ this(TagNameNode tag, RegexpNode regexp) {
+ _tagnode = tag;
+ _regexpnode = regexp;
+ condition = new RegexpTagFilter(_tagnode.tagname, _regexpnode.regexp);
+ }
+
+ override string toString() const {
+ return _tagnode.toString() ~ " =~ " ~ _regexpnode.toString();
+ }
+}
+
+/// LeftNodeType refers to TagNameNode, IntegerFieldNode, or StringFieldNode
+/// RightNodeType refers to IntegerNode or StringNode
+final class ComparisonNode(T, LeftNodeType, RightNodeType, alias Filter) : ConditionNode {
+ private {
+ LeftNodeType _node;
+ RightNodeType _valuenode;
+ string _op;
+ }
+ this(string op, LeftNodeType node, RightNodeType valuenode) {
+ _node = node;
+ _valuenode = valuenode;
+ _op = op;
+ static if (is(LeftNodeType == TagNameNode)) {
+ auto n = node.tagname;
+ } else {
+ auto n = node.fieldname;
+ }
+ auto v = valuenode.value;
+ static if (is(RightNodeType == NullValueNode)) {
+ if (op == "==") condition = new Filter!"=="(n, v);
+ else if (op == "!=") condition = new Filter!"!="(n, v);
+ else assert(0);
+ } else {
+ switch (op) {
+ case ">": condition = new Filter!">"(n, v); break;
+ case "<": condition = new Filter!"<"(n, v); break;
+ case ">=": condition = new Filter!">="(n, v); break;
+ case "<=": condition = new Filter!"<="(n, v); break;
+ case "!=": condition = new Filter!"!="(n, v); break;
+ case "==": condition = new Filter!"=="(n, v); break;
+ default: assert(0); // must be catched before calling constructor
+ }
+ }
+ }
+
+ override string toString() const {
+ return _node.toString() ~ " " ~ _op ~ " " ~ _valuenode.toString();
+ }
+}
+
+alias ComparisonNode!(long, TagNameNode, IntegerNode, IntegerTagFilter) IntegerTagConditionNode;
+alias ComparisonNode!(string, TagNameNode, StringNode, StringTagFilter) StringTagConditionNode;
+alias ComparisonNode!(long, IntegerFieldNode, IntegerNode, IntegerFieldFilter) IntegerFieldConditionNode;
+alias ComparisonNode!(string, StringFieldNode, StringNode, StringFieldFilter) StringFieldConditionNode;
+alias ComparisonNode!(typeof(null), TagNameNode, NullValueNode, TagExistenceFilter) TagExistenceConditionNode;
+
+final class OrConditionNode : ConditionNode {
+ private ConditionNode _a, _b;
+ this(Node a, Node b) {
+ _a = cast(ConditionNode)a;
+ _b = cast(ConditionNode)b;
+ enforce(_a !is null, "'" ~ a.toString() ~ "' is not a condition");
+ enforce(_a !is null, "'" ~ b.toString() ~ "' is not a condition");
+ condition = new OrFilter(_a.condition, _b.condition);
+ }
+
+ override string toString() const {
+ return "(" ~ _a.toString() ~ ") or (" ~ _b.toString() ~ ")";
+ }
+}
+
+final class AndConditionNode : ConditionNode {
+ private ConditionNode _a, _b;
+ this(Node a, Node b) {
+ _a = cast(ConditionNode)a;
+ _b = cast(ConditionNode)b;
+ enforce(_a !is null, "'" ~ a.toString() ~ "' is not a condition");
+ enforce(_a !is null, "'" ~ b.toString() ~ "' is not a condition");
+ condition = new AndFilter(_a.condition, _b.condition);
+ }
+
+ override string toString() const {
+ return "(" ~ _a.toString() ~ ") and (" ~ _b.toString() ~ ")";
+ }
+}
+
+final class NegateConditionNode : ConditionNode {
+ private ConditionNode _a;
+ this(Node a) {
+ _a = cast(ConditionNode)a;
+ enforce(_a !is null, "'" ~ a.toString() ~ "' is not a condition");
+ condition = new NotFilter(_a.condition);
+ }
+
+ override string toString() const {
+ return "not (" ~ _a.toString() ~ ")";
+ }
+}
+
+final class FlagConditionNode : ConditionNode {
+ private string _flagname;
+ this(in string flagname) {
+ _flagname = flagname;
+ switch (flagname) {
+ case "paired":
+ condition = new FlagFilter!"is_paired"(); break;
+ case "proper_pair":
+ condition = new FlagFilter!"proper_pair"(); break;
+ case "unmapped":
+ condition = new FlagFilter!"is_unmapped"(); break;
+ case "mate_is_unmapped":
+ condition = new FlagFilter!"mate_is_unmapped"(); break;
+ case "reverse_strand":
+ condition = new FlagFilter!"is_reverse_strand"(); break;
+ case "mate_is_reverse_strand":
+ condition = new FlagFilter!"mate_is_reverse_strand"(); break;
+ case "first_of_pair":
+ condition = new FlagFilter!"is_first_of_pair"(); break;
+ case "second_of_pair":
+ condition = new FlagFilter!"is_second_of_pair"(); break;
+ case "secondary_alignment":
+ condition = new FlagFilter!"is_secondary_alignment"(); break;
+ case "failed_quality_control":
+ condition = new FlagFilter!"failed_quality_control"(); break;
+ case "duplicate":
+ condition = new FlagFilter!"is_duplicate"(); break;
+ case "supplementary":
+ condition = new FlagFilter!"is_supplementary"(); break;
+ case "chimeric":
+ condition = new ChimericFilter(); break;
+ default:
+ throw new Exception("unknown flag '" ~ flagname ~ "'");
+ }
+ }
+
+ override string toString() const {
+ return _flagname;
+ }
+}
+
+final class QueryGrammar : Grammar!Node {
+ this() {
+ super("(end)");
+
+ addSymbolToDict("null").setParser((in string str) { return cast(Node) new NullValueNode(); });
+
+ static auto makeScanner(string[] values) {
+ return (in string str, size_t pos) {
+ foreach (value; values) {
+ if (startsWith(str[pos .. $], value)) {
+ return pos + value.length;
+ }
+ }
+ return pos;
+ };
+ }
+
+ auto flagnames = ["paired", "proper_pair", "unmapped", "mate_is_unmapped",
+ "reverse_strand", "mate_is_reverse_strand", "first_of_pair",
+ "second_of_pair", "secondary_alignment", "failed_quality_control",
+ "duplicate", "supplementary", "chimeric"];
+
+ addSymbolToDict("(flag condition)", 0)
+ .setScanner(makeScanner(flagnames))
+ .setParser((in string str) { return cast(Node) new FlagConditionNode(str);});
+
+ auto integer_fields = ["ref_id", "position", "mapping_quality", "avg_base_quality",
+ "sequence_length", "mate_ref_id", "mate_position",
+ "template_length"];
+
+ addSymbolToDict("(integer field)", 0)
+ .setScanner(makeScanner(integer_fields))
+ .setParser((in string str) { return cast(Node) new IntegerFieldNode(str);});
+
+ auto string_fields = ["read_name", "sequence", "cigar", "strand", "ref_name", "mate_ref_name"];
+
+ addSymbolToDict("(string field)", 0)
+ .setScanner(makeScanner(string_fields))
+ .setParser((in string str) { return cast(Node) new StringFieldNode(str); });
+
+ addSymbolToDict("(tag name)", 0)
+ .setScanner(
+ (in string str, size_t pos) {
+ auto s = str[pos .. $];
+ if (s.length == 0) return pos;
+ if (s[0] == '[' && s.length >= 4 && s[3] == ']') {
+ return pos + 4;
+ } else {
+ return pos;
+ }
+ }
+ ).setParser(
+ (in string str) { return cast(Node) new TagNameNode(str[1..3]); }
+ );
+
+ addSymbolToDict("(integer)", 0)
+ .setScanner(
+ (in string str, size_t pos) {
+ if (pos >= str.length) return pos;
+ size_t i = pos;
+ if (str[i] == '-' || str[i] == '+') {
+ ++i;
+ if (str.length == 1) return pos;
+ }
+ while (i < str.length && isDigit(str[i])) ++i;
+ return i;
+ }
+ ).setParser(
+ (in string str) { return cast(Node) new IntegerNode(to!long(str)); }
+ );
+
+ // string literal matches /'([^']|\\')*'/
+ addSymbolToDict("(string)", 0)
+ .setScanner(
+ (in string str, size_t pos) {
+ if (pos >= str.length || str[pos] != '\'') return pos;
+ size_t i = pos + 1;
+ while (i < str.length) {
+ if (str[i] == '\\' && i + 1 < str.length && str[i+1] == '\'') {
+ i += 2;
+ } else if (str[i] == '\'') {
+ i += 1;
+ break;
+ } else {
+ i += 1;
+ }
+ }
+ if (i == str.length && str[$-1] != '\'') return pos;
+ return i;
+ }
+ ).setParser(
+ (in string str) {
+ assert(str[0] == '\'');
+ assert(str[$ - 1] == '\'');
+ auto strbuilder = appender!(char[])();
+ strbuilder.reserve(str.length - 2);
+ auto s = str[1 .. $ - 1];
+ for (size_t i = 0; i < s.length; i++) {
+ if (s[i] == '\\' && i + 1 < s.length && s[i+1] == '\'') {
+ strbuilder.put('\'');
+ i += 1;
+ } else {
+ strbuilder.put(s[i]);
+ }
+ }
+ return cast(Node) new StringNode(cast(string)(strbuilder.data));
+ }
+ );
+
+ static auto makeComparisonOperator(string op) {
+ return (Node a, Node b) {
+ auto integer = cast(IntegerNode) b;
+ auto str = cast(StringNode) b;
+ auto nil = cast(NullValueNode) b;
+
+ auto tag = cast(TagNameNode) a;
+ if (integer !is null) {
+ if (tag !is null) {
+ auto node = new IntegerTagConditionNode(op, tag, integer);
+ return cast(Node) node;
+ } else {
+ auto field = cast(IntegerFieldNode) a;
+ if (field is null) {
+ throw new Exception("expected tag or integer field name instead of '"~
+ a.toString() ~ "'");
+ }
+ return cast(Node) new IntegerFieldConditionNode(op, field, integer);
+ }
+ } else if (str !is null) {
+ if (tag !is null) {
+ auto node = new StringTagConditionNode(op, tag, str);
+ return cast(Node) node;
+ } else {
+ auto field = cast(StringFieldNode) a;
+ if (field is null) {
+ throw new Exception("expected tag or string field name instead of '"~
+ a.toString() ~ "'");
+ }
+ return cast(Node) new StringFieldConditionNode(op, field, str);
+ }
+ } else if (nil !is null && (op == "==" || op == "!=")) {
+ enforce(tag !is null, "only tag value can be compared with null");
+ auto node = new TagExistenceConditionNode(op, tag, nil);
+ return cast(Node) node;
+ } else {
+ throw new Exception("can't compare `" ~ a.toString() ~ "` and `" ~
+ b.toString() ~ "`");
+ }
+ };
+ }
+
+ foreach (op; [">", "<", ">=", "<=", "==", "!="])
+ infix(op, 110, makeComparisonOperator(op));
+
+ // regexp literal matches /\/([^\/]|\\/)*\/[gixUms]
+ addSymbolToDict("(regexp)", 0)
+ .setScanner((in string str, size_t pos) {
+ if (pos >= str.length) return pos;
+ if (str[pos] != '/') return pos;
+ size_t i = pos + 1;
+ while (i < str.length) {
+ if (str[i] == '\\' && i + 1 < str.length && str[i+1] == '/') {
+ i += 2;
+ } else if (str[i] == '/') {
+ i += 1;
+ break;
+ } else {
+ i += 1;
+ }
+ }
+ if (i == str.length && str[$ - 1] != '/') return pos;
+ while (i < str.length) {
+ if (std.ascii.isWhite(str[i]) || str[i] == ')') break;
+ if (canFind("gixUms", str[i])) {
+ ++i;
+ } else {
+ return pos;
+ }
+ }
+ return i;
+ }).setParser((in string str) {
+ size_t delimiter_pos = str.length - 1;
+ while (str[delimiter_pos] != '/')
+ --delimiter_pos;
+ auto pattern = str[1 .. delimiter_pos];
+ auto options = str[delimiter_pos + 1 .. $];
+ return cast(Node) new RegexpNode(pattern, options);
+ });
+
+ infix("=~", 110,
+ (Node a, Node b) {
+ auto regexp_node = cast(RegexpNode) b;
+ if (regexp_node is null) {
+ throw new Exception("expected regular expression, not '" ~ b.toString() ~ "'");
+ }
+ auto strfield = cast(StringFieldNode) a;
+ if (strfield !is null) {
+ return cast(Node) new RegexpFieldConditionNode(strfield, regexp_node);
+ }
+ auto tag = cast(TagNameNode) a;
+ if (tag !is null) {
+ return cast(Node) new RegexpTagConditionNode(tag, regexp_node);
+ }
+ throw new Exception("expected string field or tag name, not '" ~ a.toString(), "'");
+ });
+
+ infix("and", 80, (Node a, Node b) { return cast(Node) new AndConditionNode(a, b); });
+ infix("or", 60, (Node a, Node b) { return cast(Node) new OrConditionNode(a, b); });
+ prefix("not", 100, (Node a) { return cast(Node) new NegateConditionNode(a); });
+ brackets("(", ")", int.max);
+ }
+}
+
+unittest {
+ import std.stdio;
+ auto grammar = new QueryGrammar();
+ assert(grammar.parse("unmapped and mate_is_unmapped").toString() == "(unmapped) and (mate_is_unmapped)");
+// writeln(grammar.parse("[BQ] >= 'ab\\'asdga' and ([NM] < 12 or unmapped and [PS] == '321') or mapping_quality < 150 and read_name >= 'abcd' and [PG] != null").toString());
+}
diff --git a/sambamba/utils/common/readstorage.d b/sambamba/utils/common/readstorage.d
new file mode 100644
index 0000000..7ced740
--- /dev/null
+++ b/sambamba/utils/common/readstorage.d
@@ -0,0 +1,140 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2014 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.common.readstorage;
+
+import std.c.stdlib;
+import std.c.string;
+import std.parallelism;
+import std.algorithm;
+import bio.core.utils.roundbuf;
+import bio.core.utils.outbuffer;
+
+import bio.bam.read;
+
+struct ReadStorage {
+ private size_t max_sz;
+
+ this(size_t max_total_size) {
+ max_sz = max_total_size;
+ read_storage = cast(ubyte*)std.c.stdlib.malloc(max_sz);
+ _reads_capa = 1024;
+ auto sz = BamRead.sizeof * _reads_capa;
+ _reads = cast(BamRead*)std.c.stdlib.malloc(sz);
+ }
+
+ void clear() {
+ _used = 0;
+ _n_reads = 0;
+ }
+
+ void fill(R)(R* reads) {
+ while (!reads.empty) {
+ auto read = reads.front;
+ auto len = read.raw_data.length;
+ if (len + _used > max_sz)
+ break;
+
+ std.c.string.memcpy(read_storage + _used, read.raw_data.ptr, len);
+ if (_n_reads == _reads_capa) {
+ _reads_capa *= 2;
+ _reads = cast(BamRead*)std.c.stdlib.realloc(_reads, _reads_capa * BamRead.sizeof);
+ }
+ _reads[_n_reads].raw_data = read_storage[_used .. _used + len];
+ _reads[_n_reads].associateWithReader(read.reader);
+
+ _n_reads += 1;
+ _used += len;
+
+ reads.popFront();
+ }
+
+ if (_n_reads == 0) {
+ auto read = reads.front;
+ auto len = read.raw_data.length;
+ assert(len > max_sz);
+ _n_reads = 1;
+ read_storage = cast(ubyte*)std.c.stdlib.realloc(read_storage, len);
+ _used = len;
+ read_storage[0 .. len] = read.raw_data[];
+ _reads[0].raw_data = read_storage[0 .. _used];
+ _reads[0].associateWithReader(read.reader);
+ reads.popFront();
+ }
+ }
+
+ void free() {
+ std.c.stdlib.free(read_storage);
+ std.c.stdlib.free(_reads);
+ }
+
+ BamRead[] reads() @property { return _reads[0 .. _n_reads]; }
+
+ private {
+ BamRead* _reads;
+ size_t _reads_capa;
+ size_t _n_reads;
+
+ ubyte* read_storage;
+ size_t _used;
+ }
+}
+
+class TaskWithData(alias converter, T...) {
+ Task!(converter, BamRead[], OutBuffer, T)* conversion_task;
+ ReadStorage input_buffer;
+ OutBuffer output_buffer;
+
+ this(size_t n=131072) {
+ input_buffer = ReadStorage(n);
+ output_buffer = new OutBuffer(n * 5);
+ }
+
+ final void run(TaskPool pool, T params) {
+ conversion_task = task!converter(input_buffer.reads, output_buffer,
+ params);
+ pool.put(conversion_task);
+ }
+}
+
+void runConversion(alias converter, alias writer, R)(R reads, TaskPool pool) {
+ auto n_tasks = max(pool.size, 2) * 4;
+ auto tasks = RoundBuf!(TaskWithData!converter)(n_tasks);
+ foreach (i; 0 .. n_tasks) {
+ if (reads.empty)
+ break;
+ auto t = new TaskWithData!converter();
+ t.input_buffer.fill(&reads);
+ t.run(pool);
+ tasks.put(t);
+ }
+
+ while (!tasks.empty) {
+ auto t = tasks.front;
+ writer(t.conversion_task.yieldForce());
+ tasks.popFront();
+ if (!reads.empty) {
+ t.input_buffer.clear();
+ t.input_buffer.fill(&reads);
+ t.output_buffer.clear();
+ t.run(pool);
+ tasks.put(t);
+ }
+ }
+}
diff --git a/sambamba/utils/common/tmpdir.d b/sambamba/utils/common/tmpdir.d
new file mode 100644
index 0000000..05bf3e2
--- /dev/null
+++ b/sambamba/utils/common/tmpdir.d
@@ -0,0 +1,24 @@
+module sambamba.utils.common.tmpdir;
+import std.random;
+import std.path;
+import std.file;
+import std.process;
+import std.conv;
+
+string defaultTmpDir() {
+ return environment.get("TMPDIR", "/tmp");
+}
+
+string randomSubdir(string tmpdir, string prefix="") {
+ auto gen = Random(unpredictableSeed);
+ char[4] subdirname;
+ string result;
+ do {
+ foreach (ref c; subdirname[])
+ c = uniform!"[]"('a', 'z', gen);
+ result = buildPath(tmpdir, "sambamba-pid" ~ thisProcessID.to!string ~
+ "-" ~ prefix ~ subdirname[]);
+ } while (std.file.exists(result));
+ std.file.mkdirRecurse(result);
+ return result;
+}
diff --git a/sambamba/utils/view/alignmentrangeprocessor.d b/sambamba/utils/view/alignmentrangeprocessor.d
new file mode 100644
index 0000000..ff96219
--- /dev/null
+++ b/sambamba/utils/view/alignmentrangeprocessor.d
@@ -0,0 +1,195 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2013 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.view.alignmentrangeprocessor;
+
+import bio.bam.reader;
+import bio.bam.read;
+import bio.bam.writer;
+import bio.bam.thirdparty.msgpack;
+import bio.core.utils.outbuffer;
+import bio.core.utils.range;
+import sambamba.utils.common.readstorage;
+
+import std.stdio;
+import std.exception;
+import std.string;
+import std.range;
+import std.array;
+import std.format;
+import std.traits;
+import std.stream : Stream, BufferedFile, FileMode;
+import std.conv;
+import std.algorithm;
+import std.parallelism;
+
+class ReadCounter {
+ size_t number_of_reads;
+
+ void process(R, SB)(R reads, SB bam) {
+ number_of_reads = walkLength(reads);
+ }
+
+ enum is_serial = true;
+}
+
+version(Posix) {
+ extern(C) int isatty(int fd);
+}
+
+version(Windows) {
+ bool isatty(int handle) {
+ return 1; // FIXME!!!
+ }
+}
+
+private bool isTty(ref std.stdio.File file) @property {
+ return isatty(file.fileno()) != 0;
+}
+
+template chunkToFormat(char format) {
+ char[] chunkToFormat(R)(in R[] reads, OutBuffer outbuffer) {
+ FormatSpec!char f = void;
+ f.spec = format; // nothing else matters
+ if (reads.length > 0) {
+ outbuffer.capacity = reads.length * reads.front.size_in_bytes * 2;
+ foreach (r; reads) {
+ r.toString((const(char)[] s) { outbuffer.put(cast(ubyte[])s); }, f);
+ outbuffer.put('\n');
+ }
+ }
+ return cast(char[])(outbuffer.data);
+ }
+}
+
+alias chunkToFormat!'s' chunkToSam;
+alias chunkToFormat!'j' chunkToJson;
+
+class TextSerializer {
+ this(File f, TaskPool pool) {
+ _f = f;
+ _pool = pool;
+
+ if (!_f.isTty)
+ _f.setvbuf(1_024_576);
+ }
+
+ private std.stdio.File _f;
+ private TaskPool _pool;
+}
+
+final class SamSerializer : TextSerializer {
+ this(File f, TaskPool pool) { super(f, pool); }
+
+ void process(R, SB)(R reads, SB bam) {
+ auto w = _f.lockingTextWriter;
+ runConversion!(chunkToSam, data => w.put(data))(reads, _pool);
+ }
+
+ enum is_serial = true;
+}
+
+import cram.writer;
+final class CramSerializer {
+ private CramWriter _writer;
+ this(string output_fn, string ref_fn, size_t n_threads) {
+ if (output_fn is null)
+ output_fn = "-"; // stdout
+ _writer = new CramWriter(output_fn, n_threads);
+ if (ref_fn !is null)
+ _writer.setFastaFilename(ref_fn);
+ }
+
+ enum is_serial = true;
+
+ void process(R, SB)(R reads, SB bam)
+ {
+ scope (exit) _writer.finish();
+ _writer.writeSamHeader(bam.header);
+ foreach (read; reads)
+ _writer.writeRecord(read);
+ }
+}
+
+final class BamSerializer {
+
+ private File _f;
+ private int _level;
+ private TaskPool _task_pool;
+ private enum BUFSIZE = 4096;//1_048_576;
+
+ string output_filename;
+
+ this(string output_fn, File f, int compression_level, TaskPool pool) {
+ output_filename = output_fn;
+ _f = f;
+ if (!_f.isTty)
+ _f.setvbuf(BUFSIZE);
+ _level = compression_level;
+ _task_pool = pool;
+ }
+
+ enum is_serial = true;
+
+ void process(R, SB)(R reads, SB bam)
+ {
+ version (Posix) {
+ auto handle = _f.fileno;
+ }
+ version (Win32) {
+ import core.stdc.stdio : _fdToHandle;
+ auto handle = _fdToHandle(_f.fileno);
+ }
+ Stream output_stream = new BufferedFile(handle, FileMode.OutNew,
+ BUFSIZE);
+ auto writer = new BamWriter(output_stream, _level, _task_pool);
+ writer.setFilename(output_filename);
+ scope(exit) writer.finish();
+ writer.writeSamHeader(bam.header);
+ writer.writeReferenceSequenceInfo(bam.reference_sequences);
+ foreach (read; reads)
+ writer.writeRecord(read);
+ }
+}
+
+final class JsonSerializer : TextSerializer {
+ this(File f, TaskPool pool) { super(f, pool); }
+
+ void process(R, SB)(R reads, SB bam) {
+ auto w = _f.lockingTextWriter;
+ runConversion!(chunkToJson, data => w.put(data))(reads, _pool);
+ }
+
+ enum is_serial = true;
+}
+
+final class MsgpackSerializer : TextSerializer {
+ this(File f) { super(f, null); }
+
+ void process(R, SB)(R reads, SB bam) {
+ auto packer = packer(Appender!(ubyte[])());
+ foreach (read; reads) {
+ packer.pack(read);
+ fwrite(packer.stream.data.ptr, packer.stream.data.length, ubyte.sizeof, _f.getFP());
+ packer.stream.clear();
+ }
+ }
+
+ enum is_serial = true;
+}
diff --git a/sambamba/utils/view/headerserializer.d b/sambamba/utils/view/headerserializer.d
new file mode 100644
index 0000000..92fb9b9
--- /dev/null
+++ b/sambamba/utils/view/headerserializer.d
@@ -0,0 +1,80 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2013 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.utils.view.headerserializer;
+
+import bio.sam.header;
+import std.conv;
+import std.array;
+import std.stdio;
+import bio.bam.thirdparty.msgpack;
+
+private {
+ abstract class IHeaderSerializer {
+ private File _f;
+ this(File f) { _f = f; }
+ void writeln(SamHeader header);
+ }
+
+ final class HeaderSamSerializer : IHeaderSerializer {
+ this(File f) { super(f); }
+ override void writeln(SamHeader header) {
+ _f.writef("%s", header);
+ }
+ }
+
+ final class HeaderJsonSerializer : IHeaderSerializer {
+ this(File f) { super(f); }
+ override void writeln(SamHeader header) {
+ _f.writef("%j", header);
+ }
+ }
+
+ final class HeaderMsgpackSerializer : IHeaderSerializer {
+ this(File f) { super(f); }
+ override void writeln(SamHeader header) {
+ auto packer = packer(Appender!(ubyte[])());
+ packer.pack(header);
+ fwrite(packer.stream.data.ptr, packer.stream.data.length, ubyte.sizeof, _f.getFP());
+ }
+ }
+}
+
+final class HeaderSerializer {
+ private IHeaderSerializer _serializer;
+
+ this(File f, string format) {
+ switch(format) {
+ case "sam":
+ case "bam":
+ _serializer = new HeaderSamSerializer(f); break;
+ case "json":
+ _serializer = new HeaderJsonSerializer(f); break;
+ case "msgpack":
+ _serializer = new HeaderMsgpackSerializer(f); break;
+ default:
+ throw new Exception("unknown format for serialization: '" ~ format ~
+ "' (expected 'sam', 'bam', 'json', or 'msgpack')");
+ }
+ }
+
+ void writeln(SamHeader header) {
+ _serializer.writeln(header);
+ }
+}
diff --git a/sambamba/view.d b/sambamba/view.d
new file mode 100644
index 0000000..66ac917
--- /dev/null
+++ b/sambamba/view.d
@@ -0,0 +1,384 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2016 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module sambamba.view;
+
+import bio.bam.reader;
+import bio.bam.read;
+import bio.bam.splitter;
+import bio.bam.region;
+import bio.sam.reader;
+import cram.reader;
+import bio.core.region;
+
+import sambamba.utils.common.filtering;
+import sambamba.utils.common.overwrite;
+import sambamba.utils.common.progressbar;
+import sambamba.utils.view.alignmentrangeprocessor;
+import sambamba.utils.view.headerserializer;
+import sambamba.utils.common.bed;
+
+import bio.core.utils.format;
+import utils.version_ : addPG;
+
+import std.stdio;
+import std.string;
+import std.array;
+import std.traits;
+import std.getopt;
+import std.parallelism;
+import std.algorithm;
+import std.math : isNaN;
+import std.random;
+import std.range;
+import std.conv;
+
+void printUsage() {
+ stderr.writeln("Usage: sambamba-view [options] <input.bam | input.sam> [region1 [...]]");
+ stderr.writeln();
+ stderr.writeln("Options: -F, --filter=FILTER");
+ stderr.writeln(" set custom filter for alignments");
+ stderr.writeln(" -f, --format=sam|bam|cram|json");
+ stderr.writeln(" specify which format to use for output (default is SAM)");
+ stderr.writeln(" -h, --with-header");
+ stderr.writeln(" print header before reads (always done for BAM output)");
+ stderr.writeln(" -H, --header");
+ stderr.writeln(" output only header to stdout (if format=bam, the header is printed as SAM)");
+ stderr.writeln(" -I, --reference-info");
+ stderr.writeln(" output to stdout only reference names and lengths in JSON");
+ stderr.writeln(" -L, --regions=FILENAME");
+ stderr.writeln(" output only reads overlapping one of regions from the BED file");
+ stderr.writeln(" -c, --count");
+ stderr.writeln(" output to stdout only count of matching records, hHI are ignored");
+ stderr.writeln(" -v, --valid");
+ stderr.writeln(" output only valid alignments");
+ stderr.writeln(" -S, --sam-input");
+ stderr.writeln(" specify that input is in SAM format");
+ stderr.writeln(" -C, --cram-input");
+ stderr.writeln(" specify that input is in CRAM format");
+ stderr.writeln(" -T, --ref-filename=FASTA");
+ stderr.writeln(" specify reference for writing CRAM");
+ stderr.writeln(" -p, --show-progress");
+ stderr.writeln(" show progressbar in STDERR (works only for BAM files with no regions specified)");
+ stderr.writeln(" -l, --compression-level");
+ stderr.writeln(" specify compression level (from 0 to 9, works only for BAM output)");
+ stderr.writeln(" -o, --output-filename");
+ stderr.writeln(" specify output filename");
+ stderr.writeln(" -t, --nthreads=NTHREADS");
+ stderr.writeln(" maximum number of threads to use");
+ stderr.writeln(" -s, --subsample=FRACTION");
+ stderr.writeln(" subsample reads (read pairs)");
+ stderr.writeln(" --subsampling-seed=SEED");
+ stderr.writeln(" set seed for subsampling");
+}
+
+void outputReferenceInfoJson(T)(T bam) {
+
+ auto w = stdout.lockingTextWriter;
+ w.put('[');
+
+ bool first = true;
+ foreach (refseq; bam.reference_sequences) {
+ if (first) {
+ first = false;
+ } else {
+ w.put(',');
+ }
+ w.put(`{"name":`);
+ writeJson((const(char)[] s) { w.put(s); }, refseq.name);
+ w.put(`,"length":`);
+ writeJson((const(char)[] s) { w.put(s); }, refseq.length);
+ w.put('}');
+ }
+
+ w.put("]\n");
+}
+
+string format = "sam";
+string query;
+string ref_fn;
+bool with_header;
+bool header_only;
+bool reference_info_only;
+bool count_only;
+bool skip_invalid_alignments;
+bool is_sam;
+bool is_cram;
+
+bool show_progress;
+
+int compression_level = -1;
+string output_filename;
+uint n_threads;
+double subsample_frac; // NaN by default
+ulong subsampling_seed;
+string bed_filename;
+
+string[] unparsed_args;
+
+version(standalone) {
+ int main(string[] args) {
+ return view_main(args);
+ }
+}
+
+int view_main(string[] args) {
+ n_threads = totalCPUs;
+
+ subsampling_seed = unpredictableSeed;
+ subsampling_seed <<= 32;
+ subsampling_seed += unpredictableSeed;
+
+ unparsed_args = args.dup;
+
+ try {
+
+ getopt(args,
+ std.getopt.config.caseSensitive,
+ "filter|F", &query,
+ "format|f", &format,
+ "with-header|h", &with_header,
+ "header|H", &header_only,
+ "reference-info|I", &reference_info_only,
+ "regions|L", &bed_filename,
+ "count|c", &count_only,
+ "valid|v", &skip_invalid_alignments,
+ "sam-input|S", &is_sam,
+ "cram-input|C", &is_cram, // TODO: autodetection of format
+ "show-progress|p", &show_progress,
+ "compression-level|l", &compression_level,
+ "output-filename|o", &output_filename,
+ "nthreads|t", &n_threads,
+ "subsample|s", &subsample_frac,
+ "subsampling-seed", &subsampling_seed,
+ "ref-filename|T", &ref_fn);
+
+ if (args.length < 2) {
+ printUsage();
+ return 0;
+ }
+
+ // <cludge> cram writer doesn't share the task pool
+ if (!is_sam && format == "cram")
+ n_threads /= 2;
+ // </cludge>
+
+ protectFromOverwrite(args[1], output_filename);
+
+ if (is_cram && is_sam)
+ throw new Exception("only one of --sam-input and --cram-input can be specified");
+
+ auto task_pool = new TaskPool(n_threads);
+ scope(exit) task_pool.finish();
+ if (is_sam) {
+ auto sam = new SamReader(args[1]);
+ return sambambaMain(sam, task_pool, args);
+ } else if (!is_cram) {
+ auto bam = new BamReader(args[1], task_pool);
+ return sambambaMain(bam, task_pool, args);
+ } else {
+ auto cram = new CramReader(args[1], task_pool);
+ return sambambaMain(cram, task_pool, args);
+ }
+ } catch (Exception e) {
+ stderr.writeln("sambamba-view: ", e.msg);
+
+ version(development) {
+ throw e; // rethrow to see detailed message
+ }
+
+ return 1;
+ }
+}
+
+auto filtered(R)(R reads, Filter f) {
+ return reads.zip(f.repeat()).filter!q{a[1].accepts(a[0])}.map!q{a[0]}();
+}
+
+int sambambaMain(T)(T _bam, TaskPool pool, string[] args)
+{
+ auto bam = _bam; // FIXME: uhm, that was a workaround for some closure-related bug
+
+ if (reference_info_only && !count_only) {
+ outputReferenceInfoJson(bam);
+ return 0;
+ }
+
+ File output_file;
+ if (output_filename is null || output_filename == "-")
+ output_file = stdout;
+ else
+ output_file = File(output_filename, "w+");
+
+ if (!header_only) // = some processing is done
+ addPG("view", unparsed_args, bam.header);
+
+ if (header_only && !count_only) {
+ // write header to stdout
+ (new HeaderSerializer(stdout, format)).writeln(bam.header);
+ } else if (with_header && !count_only &&
+ format != "bam" && format != "cram")
+ {
+ (new HeaderSerializer(output_file, format)).writeln(bam.header);
+ }
+
+ if (header_only) {
+ output_file.close();
+ return 0;
+ }
+
+ Filter read_filter = new NullFilter();
+
+ if (skip_invalid_alignments) {
+ read_filter = new AndFilter(read_filter, new ValidAlignmentFilter());
+ }
+
+ if (query !is null) {
+ auto query_filter = createFilterFromQuery(query);
+ if (query_filter is null)
+ return 1;
+ read_filter = new AndFilter(read_filter, query_filter);
+ }
+
+ if (!isNaN(subsample_frac)) {
+ auto subsample_filter = new SubsampleFilter(subsample_frac, subsampling_seed);
+ read_filter = new AndFilter(subsample_filter, read_filter);
+ }
+
+ int processAlignments(P)(P processor) {
+ static if (is(T == SamReader)) {
+ if (args.length > 2) {
+ stderr.writeln("region queries are unavailable for SAM input");
+ return 1;
+ }
+ }
+
+ void runProcessor(SB, R, F)(SB bam, R reads, F filter) {
+ if (processor.is_serial)
+ bam.assumeSequentialProcessing();
+ if (cast(NullFilter) filter)
+ processor.process(reads, bam);
+ else
+ processor.process(reads.filtered(filter), bam);
+ }
+
+ bool output_all_reads = args.length == 2 &&
+ (bed_filename.empty || bam.header.sorting_order != SortingOrder.coordinate);
+ static if (is(T == SamReader))
+ output_all_reads = true;
+
+ if (bed_filename.length > 0 && args.length > 2) {
+ throw new Exception("specifying both region and BED filename is disallowed");
+ }
+
+ if (output_all_reads) {
+ if (bed_filename !is null) {
+ auto regions = parseBed(bed_filename, bam);
+ read_filter = new AndFilter(read_filter, new BedFilter(regions));
+ }
+
+ static if (is(T == BamReader)) {
+ if (show_progress) {
+ auto bar = new shared(ProgressBar)();
+ auto reads = bam.readsWithProgress((lazy float p) { bar.update(p); });
+ runProcessor(bam, reads, read_filter);
+ bar.finish();
+ } else {
+ runProcessor(bam, bam.reads!withoutOffsets(), read_filter);
+ }
+ } else { // SamFile
+ runProcessor(bam, bam.reads, read_filter);
+ }
+ } else {
+ // for BAM/CRAM, random access is available
+ static if (is(T == BamReader) || is(T == CramReader)) {
+ if (args.length > 2) {
+ auto regions = map!parseRegion(args[2 .. $]);
+
+ alias typeof(bam.unmappedReads().front) Read;
+ alias InputRange!Read AlignmentRange;
+ auto alignment_ranges = new AlignmentRange[regions.length];
+
+ size_t i = 0;
+ foreach (region_description; args[2 .. $]) {
+ AlignmentRange range;
+ if (region_description == "*") {
+ range = bam.unmappedReads().inputRangeObject;
+ } else {
+ auto r = parseRegion(region_description);
+ auto seq = bam[r.reference];
+ if (r.end == uint.max)
+ r.end = seq.length;
+ range = seq[r.beg .. r.end].inputRangeObject;
+ }
+ alignment_ranges[i++] = range;
+ }
+
+ auto reads = joiner(alignment_ranges);
+ runProcessor(bam, reads, read_filter);
+ } else if (bed_filename.length > 0) {
+ static if (is(T == CramReader)) {
+ throw new Exception("BED support is unavailable for CRAM");
+ } else {
+ auto regions = parseBed(bed_filename, bam);
+ auto reads = bam.getReadsOverlapping(regions);
+ runProcessor(bam, reads, read_filter);
+ }
+ }
+ }
+ }
+
+ return 0;
+ }
+
+ if (count_only) {
+ auto counter = new ReadCounter();
+
+ if (processAlignments(counter))
+ return 1;
+ writeln(counter.number_of_reads);
+ } else {
+ if (format == "bam") {
+ // FIXME: dirty hack to avoid closing file twice, depends on std.stdio.File internals
+ scope(exit) *(*cast(void***)(&output_file)) = null;
+ return processAlignments(new BamSerializer(output_filename,
+ output_file,
+ compression_level, pool));
+ } else if (format == "cram") {
+ output_file.close();
+ return processAlignments(new CramSerializer(output_filename, ref_fn,
+ n_threads));
+ }
+
+ scope (exit) output_file.close();
+ switch (format) {
+ case "sam":
+ return processAlignments(new SamSerializer(output_file, pool));
+ case "json":
+ return processAlignments(new JsonSerializer(output_file, pool));
+ case "msgpack":
+ return processAlignments(new MsgpackSerializer(output_file));
+ default:
+ stderr.writeln("output format must be one of sam, bam, cram, json");
+ return 1;
+ }
+ }
+
+ return 0;
+}
diff --git a/test/issue225.bam b/test/issue225.bam
new file mode 100644
index 0000000..db9dbd3
Binary files /dev/null and b/test/issue225.bam differ
diff --git a/test/issue225.bam.bai b/test/issue225.bam.bai
new file mode 100644
index 0000000..13300ad
Binary files /dev/null and b/test/issue225.bam.bai differ
diff --git a/test/issue225.out b/test/issue225.out
new file mode 100644
index 0000000..6a633f9
--- /dev/null
+++ b/test/issue225.out
@@ -0,0 +1,1904 @@
+REF POS COV A C G T DEL REFSKIP SAMPLE
+chrM 699 1 0 1 0 0 0 0 16-3584
+chrM 700 1 0 1 0 0 0 0 16-3584
+chrM 701 1 0 1 0 0 0 0 16-3584
+chrM 702 1 0 0 0 1 0 0 16-3584
+chrM 703 1 1 0 0 0 0 0 16-3584
+chrM 704 2 0 1 0 1 0 0 16-3584
+chrM 705 2 0 1 1 0 0 0 16-3584
+chrM 706 2 0 1 0 1 0 0 16-3584
+chrM 707 2 0 0 1 1 0 0 16-3584
+chrM 708 2 0 1 1 0 0 0 16-3584
+chrM 709 2 1 0 1 0 0 0 16-3584
+chrM 710 2 0 2 0 0 0 0 16-3584
+chrM 711 2 0 0 2 0 0 0 16-3584
+chrM 712 2 0 2 0 0 0 0 16-3584
+chrM 713 2 2 0 0 0 0 0 16-3584
+chrM 714 2 0 1 1 0 0 0 16-3584
+chrM 715 2 1 1 0 0 0 0 16-3584
+chrM 716 2 0 1 1 0 0 0 16-3584
+chrM 717 2 1 0 0 1 0 0 16-3584
+chrM 718 2 1 0 0 1 0 0 16-3584
+chrM 719 2 1 1 0 0 0 0 16-3584
+chrM 720 2 2 0 0 0 0 0 16-3584
+chrM 721 2 1 0 1 0 0 0 16-3584
+chrM 722 2 1 0 0 1 0 0 16-3584
+chrM 723 2 1 1 0 0 0 0 16-3584
+chrM 724 2 0 0 2 0 0 0 16-3584
+chrM 725 2 0 1 0 1 0 0 16-3584
+chrM 726 2 1 0 1 0 0 0 16-3584
+chrM 727 2 0 0 1 1 0 0 16-3584
+chrM 728 2 0 2 0 0 0 0 16-3584
+chrM 729 2 0 0 2 0 0 0 16-3584
+chrM 730 2 0 2 0 0 0 0 16-3584
+chrM 731 2 0 1 0 1 0 0 16-3584
+chrM 732 2 0 1 1 0 0 0 16-3584
+chrM 733 2 2 0 0 0 0 0 16-3584
+chrM 734 2 2 0 0 0 0 0 16-3584
+chrM 735 2 0 1 0 1 0 0 16-3584
+chrM 736 2 2 0 0 0 0 0 16-3584
+chrM 737 2 1 1 0 0 0 0 16-3584
+chrM 738 2 0 1 1 0 0 0 16-3584
+chrM 739 2 0 1 0 1 0 0 16-3584
+chrM 740 2 0 0 2 0 0 0 16-3584
+chrM 741 2 1 0 0 1 0 0 16-3584
+chrM 742 2 1 0 1 0 0 0 16-3584
+chrM 743 2 1 0 1 0 0 0 16-3584
+chrM 744 2 0 0 1 1 0 0 16-3584
+chrM 745 2 1 1 0 0 0 0 16-3584
+chrM 746 2 0 1 1 0 0 0 16-3584
+chrM 747 2 0 1 1 0 0 0 16-3584
+chrM 748 2 1 1 0 0 0 0 16-3584
+chrM 749 2 0 0 1 1 0 0 16-3584
+chrM 750 2 1 1 0 0 0 0 16-3584
+chrM 751 2 1 0 1 0 0 0 16-3584
+chrM 752 2 1 0 1 0 0 0 16-3584
+chrM 753 2 0 1 0 1 0 0 16-3584
+chrM 754 2 1 0 1 0 0 0 16-3584
+chrM 755 2 1 0 0 1 0 0 16-3584
+chrM 756 2 0 0 1 1 0 0 16-3584
+chrM 757 2 1 0 0 1 0 0 16-3584
+chrM 758 2 1 0 0 1 0 0 16-3584
+chrM 759 2 0 1 0 1 0 0 16-3584
+chrM 760 2 0 2 0 0 0 0 16-3584
+chrM 761 2 0 1 1 0 0 0 16-3584
+chrM 762 2 0 1 0 1 0 0 16-3584
+chrM 763 2 0 0 1 1 0 0 16-3584
+chrM 764 2 1 0 1 0 0 0 16-3584
+chrM 765 2 0 1 0 1 0 0 16-3584
+chrM 766 2 1 0 1 0 0 0 16-3584
+chrM 767 2 0 0 0 2 0 0 16-3584
+chrM 768 2 1 0 1 0 0 0 16-3584
+chrM 769 2 0 2 0 0 0 0 16-3584
+chrM 770 2 0 2 0 0 0 0 16-3584
+chrM 771 1 1 0 0 0 0 0 16-3584
+chrM 772 1 0 1 0 0 0 0 16-3584
+chrM 773 1 0 1 0 0 0 0 16-3584
+chrM 774 1 1 0 0 0 0 0 16-3584
+chrM 775 1 0 1 0 0 0 0 16-3584
+chrM 1860 15 2 4 6 3 0 0 16-3584
+chrM 1861 15 4 1 3 7 0 0 16-3584
+chrM 1862 15 3 7 2 3 0 0 16-3584
+chrM 1863 15 4 5 4 2 0 0 16-3584
+chrM 1864 15 3 4 3 5 0 0 16-3584
+chrM 1865 30 8 8 11 3 0 0 16-3584
+chrM 1866 30 7 4 10 9 0 0 16-3584
+chrM 1867 30 9 6 6 9 0 0 16-3584
+chrM 1868 30 6 4 9 11 0 0 16-3584
+chrM 1869 30 8 9 6 7 0 0 16-3584
+chrM 1870 30 7 6 10 7 0 0 16-3584
+chrM 1871 30 10 6 7 7 0 0 16-3584
+chrM 1872 30 7 5 9 9 0 0 16-3584
+chrM 1873 30 6 11 8 5 0 0 16-3584
+chrM 1874 30 7 6 10 7 0 0 16-3584
+chrM 1875 30 5 6 5 14 0 0 16-3584
+chrM 1876 30 8 9 8 5 0 0 16-3584
+chrM 1877 30 7 6 12 5 0 0 16-3584
+chrM 1878 30 7 12 6 5 0 0 16-3584
+chrM 1879 30 8 6 7 9 0 0 16-3584
+chrM 1880 30 10 6 7 7 0 0 16-3584
+chrM 1881 30 6 12 7 5 0 0 16-3584
+chrM 1882 30 6 8 7 9 0 0 16-3584
+chrM 1883 30 7 8 8 7 0 0 16-3584
+chrM 1884 30 8 6 4 12 0 0 16-3584
+chrM 1885 30 11 6 8 5 0 0 16-3584
+chrM 1886 30 7 6 8 9 0 0 16-3584
+chrM 1887 30 7 12 7 4 0 0 16-3584
+chrM 1888 30 9 7 8 6 0 0 16-3584
+chrM 1889 30 9 4 8 9 0 0 16-3584
+chrM 1890 30 7 6 8 9 0 0 16-3584
+chrM 1891 30 8 8 6 8 0 0 16-3584
+chrM 1892 30 10 7 8 5 0 0 16-3584
+chrM 1893 30 3 8 8 11 0 0 16-3584
+chrM 1894 30 6 8 8 8 0 0 16-3584
+chrM 1895 30 7 9 7 7 0 0 16-3584
+chrM 1896 30 9 4 8 9 0 0 16-3584
+chrM 1897 30 5 9 5 11 0 0 16-3584
+chrM 1898 30 10 6 4 10 0 0 16-3584
+chrM 1899 30 6 8 10 6 0 0 16-3584
+chrM 1900 30 8 6 8 8 0 0 16-3584
+chrM 1901 30 7 11 4 8 0 0 16-3584
+chrM 1902 30 9 7 6 8 0 0 16-3584
+chrM 1903 30 7 7 7 9 0 0 16-3584
+chrM 1904 30 6 5 8 11 0 0 16-3584
+chrM 1905 30 6 6 8 10 0 0 16-3584
+chrM 1906 30 12 6 10 2 0 0 16-3584
+chrM 1907 30 7 6 4 13 0 0 16-3584
+chrM 1908 30 8 8 7 7 0 0 16-3584
+chrM 1909 30 6 8 11 5 0 0 16-3584
+chrM 1910 30 10 13 6 1 0 0 16-3584
+chrM 1911 30 8 6 13 3 0 0 16-3584
+chrM 1912 30 5 9 10 6 0 0 16-3584
+chrM 1913 30 5 7 7 11 0 0 16-3584
+chrM 1914 30 8 9 9 4 0 0 16-3584
+chrM 1915 30 7 5 12 6 0 0 16-3584
+chrM 1916 30 10 8 5 7 0 0 16-3584
+chrM 1917 30 5 5 10 10 0 0 16-3584
+chrM 1918 30 4 9 11 6 0 0 16-3584
+chrM 1919 30 11 7 7 5 0 0 16-3584
+chrM 1920 30 7 10 8 5 0 0 16-3584
+chrM 1921 30 7 6 10 7 0 0 16-3584
+chrM 1922 30 11 6 8 5 0 0 16-3584
+chrM 1923 30 6 9 8 7 0 0 16-3584
+chrM 1924 30 9 7 8 6 0 0 16-3584
+chrM 1925 30 6 7 7 10 0 0 16-3584
+chrM 1926 30 8 4 5 13 0 0 16-3584
+chrM 1927 30 6 9 6 9 0 0 16-3584
+chrM 1928 30 6 5 10 9 0 0 16-3584
+chrM 1929 30 4 10 8 8 0 0 16-3584
+chrM 1930 30 5 8 9 8 0 0 16-3584
+chrM 1931 30 6 5 9 10 0 0 16-3584
+chrM 1932 30 10 6 8 6 0 0 16-3584
+chrM 1933 30 8 4 6 12 0 0 16-3584
+chrM 1934 30 6 9 7 8 0 0 16-3584
+chrM 1935 30 8 7 9 6 0 0 16-3584
+chrM 1936 30 7 4 7 12 0 0 16-3584
+chrM 1937 30 12 9 7 2 0 0 16-3584
+chrM 1938 30 8 9 7 6 0 0 16-3584
+chrM 1939 30 5 5 9 11 0 0 16-3584
+chrM 1940 15 6 5 3 1 0 0 16-3584
+chrM 1941 15 6 2 2 5 0 0 16-3584
+chrM 1942 15 1 2 5 7 0 0 16-3584
+chrM 1943 15 6 3 3 3 0 0 16-3584
+chrM 1944 15 3 2 4 6 0 0 16-3584
+chrM 3965 1 0 1 0 0 0 0 16-3584
+chrM 3966 1 0 1 0 0 0 0 16-3584
+chrM 3967 1 1 0 0 0 0 0 16-3584
+chrM 3968 1 0 0 0 1 0 0 16-3584
+chrM 3969 1 0 0 1 0 0 0 16-3584
+chrM 3970 1 0 0 1 0 0 0 16-3584
+chrM 3971 1 1 0 0 0 0 0 16-3584
+chrM 3972 1 1 0 0 0 0 0 16-3584
+chrM 3973 1 0 0 1 0 0 0 16-3584
+chrM 3974 1 1 0 0 0 0 0 16-3584
+chrM 3975 1 0 1 0 0 0 0 16-3584
+chrM 3976 1 0 1 0 0 0 0 16-3584
+chrM 3977 1 0 1 0 0 0 0 16-3584
+chrM 3978 1 0 1 0 0 0 0 16-3584
+chrM 3979 1 0 1 0 0 0 0 16-3584
+chrM 3980 1 0 0 0 1 0 0 16-3584
+chrM 3981 1 0 1 0 0 0 0 16-3584
+chrM 3982 1 0 0 1 0 0 0 16-3584
+chrM 3983 1 0 0 0 1 0 0 16-3584
+chrM 3984 1 0 0 1 0 0 0 16-3584
+chrM 3985 1 1 0 0 0 0 0 16-3584
+chrM 3986 1 0 1 0 0 0 0 16-3584
+chrM 3987 1 0 0 1 0 0 0 16-3584
+chrM 3988 1 0 0 1 0 0 0 16-3584
+chrM 3989 1 0 0 0 1 0 0 16-3584
+chrM 3990 1 0 0 1 0 0 0 16-3584
+chrM 3991 1 0 0 0 1 0 0 16-3584
+chrM 3992 1 1 0 0 0 0 0 16-3584
+chrM 3993 1 0 0 0 1 0 0 16-3584
+chrM 3994 1 0 0 0 1 0 0 16-3584
+chrM 3995 1 0 0 1 0 0 0 16-3584
+chrM 3996 1 0 0 1 0 0 0 16-3584
+chrM 3997 1 0 1 0 0 0 0 16-3584
+chrM 3998 1 0 1 0 0 0 0 16-3584
+chrM 3999 1 0 0 0 1 0 0 16-3584
+chrM 4000 1 1 0 0 0 0 0 16-3584
+chrM 4001 1 1 0 0 0 0 0 16-3584
+chrM 4002 1 0 1 0 0 0 0 16-3584
+chrM 4003 1 0 0 1 0 0 0 16-3584
+chrM 4004 1 0 0 1 0 0 0 16-3584
+chrM 4005 1 0 0 0 1 0 0 16-3584
+chrM 4006 1 1 0 0 0 0 0 16-3584
+chrM 4007 1 1 0 0 0 0 0 16-3584
+chrM 4008 1 1 0 0 0 0 0 16-3584
+chrM 4009 1 0 1 0 0 0 0 16-3584
+chrM 4010 1 0 0 1 0 0 0 16-3584
+chrM 4011 1 1 0 0 0 0 0 16-3584
+chrM 4012 1 0 0 1 0 0 0 16-3584
+chrM 4013 1 1 0 0 0 0 0 16-3584
+chrM 4014 1 0 1 0 0 0 0 16-3584
+chrM 4015 1 0 0 1 0 0 0 16-3584
+chrM 4016 1 0 1 0 0 0 0 16-3584
+chrM 4017 1 0 0 1 0 0 0 16-3584
+chrM 4018 1 1 0 0 0 0 0 16-3584
+chrM 4019 1 0 0 0 1 0 0 16-3584
+chrM 4020 1 0 1 0 0 0 0 16-3584
+chrM 4021 1 0 0 1 0 0 0 16-3584
+chrM 4022 1 1 0 0 0 0 0 16-3584
+chrM 4023 1 1 0 0 0 0 0 16-3584
+chrM 4024 1 1 0 0 0 0 0 16-3584
+chrM 4025 1 1 0 0 0 0 0 16-3584
+chrM 4026 1 0 0 0 1 0 0 16-3584
+chrM 4027 1 0 0 0 1 0 0 16-3584
+chrM 4028 1 0 0 1 0 0 0 16-3584
+chrM 4029 1 1 0 0 0 0 0 16-3584
+chrM 4030 1 0 1 0 0 0 0 16-3584
+chrM 4031 1 0 1 0 0 0 0 16-3584
+chrM 4032 1 1 0 0 0 0 0 16-3584
+chrM 4033 1 0 0 0 1 0 0 16-3584
+chrM 4034 1 0 0 1 0 0 0 16-3584
+chrM 4035 1 0 0 0 1 0 0 16-3584
+chrM 4036 1 0 1 0 0 0 0 16-3584
+chrM 4037 1 0 0 1 0 0 0 16-3584
+chrM 4038 1 0 1 0 0 0 0 16-3584
+chrM 4039 1 0 1 0 0 0 0 16-3584
+chrM 4040 1 1 0 0 0 0 0 16-3584
+chrM 4041 1 1 0 0 0 0 0 16-3584
+chrM 4042 1 0 0 1 0 0 0 16-3584
+chrM 4043 1 0 0 1 0 0 0 16-3584
+chrM 4044 1 0 1 0 0 0 0 16-3584
+chrM 4045 1 1 0 0 0 0 0 16-3584
+chrM 4046 1 0 0 1 0 0 0 16-3584
+chrM 4047 1 0 1 0 0 0 0 16-3584
+chrM 4048 1 1 0 0 0 0 0 16-3584
+chrM 4049 1 0 0 1 0 0 0 16-3584
+chrM 4050 1 0 1 0 0 0 0 16-3584
+chrM 4051 1 0 0 1 0 0 0 16-3584
+chrM 4052 1 0 0 1 0 0 0 16-3584
+chrM 4053 1 0 0 1 0 0 0 16-3584
+chrM 4054 1 0 0 0 1 0 0 16-3584
+chrM 4055 1 0 1 0 0 0 0 16-3584
+chrM 4056 1 0 1 0 0 0 0 16-3584
+chrM 4057 1 0 0 0 1 0 0 16-3584
+chrM 4058 1 0 0 0 1 0 0 16-3584
+chrM 4059 1 0 1 0 0 0 0 16-3584
+chrM 4060 1 0 0 0 1 0 0 16-3584
+chrM 4061 1 0 1 0 0 0 0 16-3584
+chrM 4062 1 0 0 1 0 0 0 16-3584
+chrM 4063 1 0 1 0 0 0 0 16-3584
+chrM 4064 1 0 0 1 0 0 0 16-3584
+chrM 4065 1 0 0 1 0 0 0 16-3584
+chrM 4066 1 0 0 0 1 0 0 16-3584
+chrM 4067 1 0 0 1 0 0 0 16-3584
+chrM 4068 1 1 0 0 0 0 0 16-3584
+chrM 4069 1 0 0 1 0 0 0 16-3584
+chrM 4070 1 0 0 0 1 0 0 16-3584
+chrM 4071 1 1 0 0 0 0 0 16-3584
+chrM 4072 1 0 0 0 1 0 0 16-3584
+chrM 4073 1 0 0 1 0 0 0 16-3584
+chrM 4074 1 1 0 0 0 0 0 16-3584
+chrM 4075 1 0 0 1 0 0 0 16-3584
+chrM 4076 1 0 1 0 0 0 0 16-3584
+chrM 4077 1 0 1 0 0 0 0 16-3584
+chrM 4078 1 1 0 0 0 0 0 16-3584
+chrM 4079 1 0 0 1 0 0 0 16-3584
+chrM 4080 1 0 0 0 1 0 0 16-3584
+chrM 4081 1 0 0 1 0 0 0 16-3584
+chrM 4082 1 1 0 0 0 0 0 16-3584
+chrM 4083 1 0 0 1 0 0 0 16-3584
+chrM 4084 1 1 0 0 0 0 0 16-3584
+chrM 4085 1 0 0 0 1 0 0 16-3584
+chrM 4086 1 0 1 0 0 0 0 16-3584
+chrM 4087 1 0 0 0 1 0 0 16-3584
+chrM 4088 1 1 0 0 0 0 0 16-3584
+chrM 4089 1 0 0 1 0 0 0 16-3584
+chrM 4090 1 1 0 0 0 0 0 16-3584
+chrM 4091 1 1 0 0 0 0 0 16-3584
+chrM 4092 1 0 0 0 1 0 0 16-3584
+chrM 4093 1 1 0 0 0 0 0 16-3584
+chrM 4094 1 0 1 0 0 0 0 16-3584
+chrM 4095 1 1 0 0 0 0 0 16-3584
+chrM 4096 1 0 0 1 0 0 0 16-3584
+chrM 4097 1 0 0 0 1 0 0 16-3584
+chrM 4098 1 0 0 1 0 0 0 16-3584
+chrM 4099 1 0 0 0 1 0 0 16-3584
+chrM 4100 1 1 0 0 0 0 0 16-3584
+chrM 4101 1 0 0 1 0 0 0 16-3584
+chrM 4102 1 1 0 0 0 0 0 16-3584
+chrM 4103 1 0 0 1 0 0 0 16-3584
+chrM 4104 1 0 1 0 0 0 0 16-3584
+chrM 4105 1 0 0 1 0 0 0 16-3584
+chrM 4106 1 0 0 0 1 0 0 16-3584
+chrM 4107 1 1 0 0 0 0 0 16-3584
+chrM 4108 1 0 0 0 1 0 0 16-3584
+chrM 4109 1 0 0 1 0 0 0 16-3584
+chrM 4110 1 0 0 0 1 0 0 16-3584
+chrM 4127 1 1 0 0 0 0 0 16-3584
+chrM 4128 1 0 0 0 1 0 0 16-3584
+chrM 4129 1 0 0 0 1 0 0 16-3584
+chrM 4130 1 0 0 0 1 0 0 16-3584
+chrM 4131 1 1 0 0 0 0 0 16-3584
+chrM 4132 1 0 0 0 1 0 0 16-3584
+chrM 4133 1 0 1 0 0 0 0 16-3584
+chrM 4134 1 1 0 0 0 0 0 16-3584
+chrM 4135 1 1 0 0 0 0 0 16-3584
+chrM 4136 1 0 0 1 0 0 0 16-3584
+chrM 4137 1 0 0 1 0 0 0 16-3584
+chrM 4138 1 0 1 0 0 0 0 16-3584
+chrM 4139 1 0 0 1 0 0 0 16-3584
+chrM 4140 1 0 1 0 0 0 0 16-3584
+chrM 4141 1 0 0 0 1 0 0 16-3584
+chrM 4142 1 1 0 0 0 0 0 16-3584
+chrM 4143 1 0 1 0 0 0 0 16-3584
+chrM 4144 1 0 0 1 0 0 0 16-3584
+chrM 4145 1 0 0 0 1 0 0 16-3584
+chrM 4146 1 1 0 0 0 0 0 16-3584
+chrM 4147 1 0 1 0 0 0 0 16-3584
+chrM 4148 1 0 1 0 0 0 0 16-3584
+chrM 4149 1 1 0 0 0 0 0 16-3584
+chrM 4150 1 0 1 0 0 0 0 16-3584
+chrM 4151 1 1 0 0 0 0 0 16-3584
+chrM 4152 1 0 1 0 0 0 0 16-3584
+chrM 4153 1 1 0 0 0 0 0 16-3584
+chrM 4154 1 0 0 0 1 0 0 16-3584
+chrM 4155 1 1 0 0 0 0 0 16-3584
+chrM 4156 1 0 1 0 0 0 0 16-3584
+chrM 4157 1 0 0 1 0 0 0 16-3584
+chrM 4158 1 1 0 0 0 0 0 16-3584
+chrM 4159 1 1 0 0 0 0 0 16-3584
+chrM 4160 1 0 1 0 0 0 0 16-3584
+chrM 4161 1 0 1 0 0 0 0 16-3584
+chrM 4162 1 0 0 1 0 0 0 16-3584
+chrM 4163 1 1 0 0 0 0 0 16-3584
+chrM 4164 1 0 0 1 0 0 0 16-3584
+chrM 4165 2 0 1 0 1 0 0 16-3584
+chrM 4166 2 2 0 0 0 0 0 16-3584
+chrM 4167 2 0 2 0 0 0 0 16-3584
+chrM 4168 2 0 1 0 1 0 0 16-3584
+chrM 4169 2 0 2 0 0 0 0 16-3584
+chrM 4170 2 0 1 1 0 0 0 16-3584
+chrM 4171 2 1 0 1 0 0 0 16-3584
+chrM 4172 2 0 1 0 1 0 0 16-3584
+chrM 4173 2 0 0 2 0 0 0 16-3584
+chrM 4174 2 0 1 0 1 0 0 16-3584
+chrM 4175 2 0 0 1 1 0 0 16-3584
+chrM 4176 2 1 0 0 1 0 0 16-3584
+chrM 4177 2 2 0 0 0 0 0 16-3584
+chrM 4178 2 0 0 1 1 0 0 16-3584
+chrM 4179 2 2 0 0 0 0 0 16-3584
+chrM 4180 2 0 0 2 0 0 0 16-3584
+chrM 4181 2 1 1 0 0 0 0 16-3584
+chrM 4182 2 0 0 0 2 0 0 16-3584
+chrM 4183 2 0 0 1 1 0 0 16-3584
+chrM 4184 2 0 1 1 0 0 0 16-3584
+chrM 4185 2 1 0 0 1 0 0 16-3584
+chrM 4186 2 1 0 0 1 0 0 16-3584
+chrM 4187 2 1 0 0 1 0 0 16-3584
+chrM 4188 2 0 1 0 1 0 0 16-3584
+chrM 4189 2 0 2 0 0 0 0 16-3584
+chrM 4190 2 0 0 1 1 0 0 16-3584
+chrM 4191 2 0 2 0 0 0 0 16-3584
+chrM 4192 2 1 1 0 0 0 0 16-3584
+chrM 4193 2 1 0 1 0 0 0 16-3584
+chrM 4194 2 1 0 0 1 0 0 16-3584
+chrM 4195 2 0 1 0 1 0 0 16-3584
+chrM 4196 2 1 0 1 0 0 0 16-3584
+chrM 4197 2 0 1 1 0 0 0 16-3584
+chrM 4198 2 0 0 0 2 0 0 16-3584
+chrM 4199 2 1 0 0 1 0 0 16-3584
+chrM 4200 2 1 1 0 0 0 0 16-3584
+chrM 4201 2 0 0 0 2 0 0 16-3584
+chrM 4202 2 0 1 0 1 0 0 16-3584
+chrM 4203 2 0 1 1 0 0 0 16-3584
+chrM 4204 2 2 0 0 0 0 0 16-3584
+chrM 4205 2 1 0 1 0 0 0 16-3584
+chrM 4206 2 1 0 0 1 0 0 16-3584
+chrM 4207 2 1 0 1 0 0 0 16-3584
+chrM 4208 2 0 1 1 0 0 0 16-3584
+chrM 4209 2 1 1 0 0 0 0 16-3584
+chrM 4210 2 0 0 1 1 0 0 16-3584
+chrM 4211 2 0 1 1 0 0 0 16-3584
+chrM 4212 2 1 1 0 0 0 0 16-3584
+chrM 4213 2 1 0 0 1 0 0 16-3584
+chrM 4214 2 0 0 1 1 0 0 16-3584
+chrM 4215 2 0 1 1 0 0 0 16-3584
+chrM 4216 2 0 2 0 0 0 0 16-3584
+chrM 4217 3 2 0 1 0 0 0 16-3584
+chrM 4218 3 2 0 0 1 0 0 16-3584
+chrM 4219 3 1 0 0 2 0 0 16-3584
+chrM 4220 3 0 0 1 2 0 0 16-3584
+chrM 4221 3 0 1 2 0 0 0 16-3584
+chrM 4222 3 1 0 1 1 0 0 16-3584
+chrM 4223 3 1 2 0 0 0 0 16-3584
+chrM 4224 3 1 0 2 0 0 0 16-3584
+chrM 4225 3 0 1 2 0 0 0 16-3584
+chrM 4226 3 1 1 0 1 0 0 16-3584
+chrM 4227 3 2 1 0 0 0 0 16-3584
+chrM 4228 3 0 1 1 1 0 0 16-3584
+chrM 4229 3 1 1 0 1 0 0 16-3584
+chrM 4230 3 1 1 0 1 0 0 16-3584
+chrM 4231 3 1 0 1 1 0 0 16-3584
+chrM 4232 3 0 1 2 0 0 0 16-3584
+chrM 4233 3 0 1 1 1 0 0 16-3584
+chrM 4234 3 0 2 1 0 0 0 16-3584
+chrM 4235 3 1 1 0 1 0 0 16-3584
+chrM 4236 3 0 2 0 1 0 0 16-3584
+chrM 4237 3 2 0 0 1 0 0 16-3584
+chrM 4238 3 1 0 0 2 0 0 16-3584
+chrM 4239 3 2 0 0 1 0 0 16-3584
+chrM 4240 3 0 2 1 0 0 0 16-3584
+chrM 4241 3 1 0 1 1 0 0 16-3584
+chrM 4242 3 0 1 0 2 0 0 16-3584
+chrM 4243 3 0 1 2 0 0 0 16-3584
+chrM 4244 3 0 2 1 0 0 0 16-3584
+chrM 4245 3 0 2 0 1 0 0 16-3584
+chrM 4246 3 0 2 1 0 0 0 16-3584
+chrM 4247 3 1 1 0 1 0 0 16-3584
+chrM 4248 3 0 0 1 2 0 0 16-3584
+chrM 4249 3 1 1 1 0 0 0 16-3584
+chrM 4250 3 1 0 1 1 0 0 16-3584
+chrM 4251 3 0 2 0 1 0 0 16-3584
+chrM 4252 3 1 0 1 1 0 0 16-3584
+chrM 4253 3 1 1 1 0 0 0 16-3584
+chrM 4254 3 1 1 0 1 0 0 16-3584
+chrM 4255 3 1 1 0 1 0 0 16-3584
+chrM 4256 3 0 2 0 1 0 0 16-3584
+chrM 4257 3 0 0 3 0 0 0 16-3584
+chrM 4258 3 0 0 3 0 0 0 16-3584
+chrM 4259 3 0 1 1 1 0 0 16-3584
+chrM 4260 3 1 0 0 2 0 0 16-3584
+chrM 4261 3 1 2 0 0 0 0 16-3584
+chrM 4262 3 1 1 1 0 0 0 16-3584
+chrM 4263 3 0 0 2 1 0 0 16-3584
+chrM 4264 3 0 2 0 1 0 0 16-3584
+chrM 4265 3 0 0 1 2 0 0 16-3584
+chrM 4266 3 1 1 1 0 0 0 16-3584
+chrM 4267 3 1 1 1 0 0 0 16-3584
+chrM 4268 3 1 1 1 0 0 0 16-3584
+chrM 4269 3 1 1 0 1 0 0 16-3584
+chrM 4270 3 0 2 0 1 0 0 16-3584
+chrM 4271 3 0 1 2 0 0 0 16-3584
+chrM 4272 3 0 2 0 1 0 0 16-3584
+chrM 4273 2 1 0 1 0 0 0 16-3584
+chrM 4274 2 1 0 0 1 0 0 16-3584
+chrM 4275 2 0 1 1 0 0 0 16-3584
+chrM 4276 2 2 0 0 0 0 0 16-3584
+chrM 4277 2 1 0 1 0 0 0 16-3584
+chrM 4278 2 1 0 1 0 0 0 16-3584
+chrM 4279 2 0 0 2 0 0 0 16-3584
+chrM 4280 2 0 0 0 2 0 0 16-3584
+chrM 4281 2 2 0 0 0 0 0 16-3584
+chrM 4282 2 1 0 1 0 0 0 16-3584
+chrM 4283 2 0 1 1 0 0 0 16-3584
+chrM 4284 2 0 0 1 1 0 0 16-3584
+chrM 4285 2 0 0 1 1 0 0 16-3584
+chrM 4286 2 1 0 1 0 0 0 16-3584
+chrM 4287 2 0 2 0 0 0 0 16-3584
+chrM 4288 2 2 0 0 0 0 0 16-3584
+chrM 4289 2 0 1 0 1 0 0 16-3584
+chrM 4290 2 0 0 1 1 0 0 16-3584
+chrM 4291 2 0 0 0 2 0 0 16-3584
+chrM 4292 2 2 0 0 0 0 0 16-3584
+chrM 4293 2 2 0 0 0 0 0 16-3584
+chrM 4294 2 1 1 0 0 0 0 16-3584
+chrM 4295 2 0 0 1 1 0 0 16-3584
+chrM 4296 2 1 1 0 0 0 0 16-3584
+chrM 4297 2 1 0 0 1 0 0 16-3584
+chrM 4298 2 1 0 0 1 0 0 16-3584
+chrM 4299 2 1 0 0 1 0 0 16-3584
+chrM 4300 2 1 1 0 0 0 0 16-3584
+chrM 4301 2 0 0 0 2 0 0 16-3584
+chrM 4302 2 1 0 1 0 0 0 16-3584
+chrM 4303 2 1 1 0 0 0 0 16-3584
+chrM 4304 2 0 0 0 2 0 0 16-3584
+chrM 4305 2 1 0 0 1 0 0 16-3584
+chrM 4306 2 2 0 0 0 0 0 16-3584
+chrM 4307 2 0 0 1 1 0 0 16-3584
+chrM 4308 2 2 0 0 0 0 0 16-3584
+chrM 4309 1 0 0 1 0 0 0 16-3584
+chrM 4310 1 0 1 0 0 0 0 16-3584
+chrM 4311 1 0 0 1 0 0 0 16-3584
+chrM 4312 1 1 0 0 0 0 0 16-3584
+chrM 4313 1 0 1 0 0 0 0 16-3584
+chrM 4314 1 0 1 0 0 0 0 16-3584
+chrM 4315 1 0 0 0 1 0 0 16-3584
+chrM 4316 1 0 0 0 1 0 0 16-3584
+chrM 4317 1 0 0 0 1 0 0 16-3584
+chrM 4318 1 0 0 1 0 0 0 16-3584
+chrM 4319 1 0 0 0 1 0 0 16-3584
+chrM 4320 1 0 1 0 0 0 0 16-3584
+chrM 4321 1 0 0 1 0 0 0 16-3584
+chrM 4322 1 1 0 0 0 0 0 16-3584
+chrM 4323 1 0 1 0 0 0 0 16-3584
+chrM 4324 1 0 1 0 0 0 0 16-3584
+chrM 4325 1 1 0 0 0 0 0 16-3584
+chrM 4326 1 0 0 0 1 0 0 16-3584
+chrM 4327 1 0 0 0 1 0 0 16-3584
+chrM 4328 1 1 0 0 0 0 0 16-3584
+chrM 4329 1 0 0 1 0 0 0 16-3584
+chrM 4330 1 1 0 0 0 0 0 16-3584
+chrM 4331 1 0 0 1 0 0 0 16-3584
+chrM 4332 1 1 0 0 0 0 0 16-3584
+chrM 4333 1 1 0 0 0 0 0 16-3584
+chrM 4334 1 0 0 0 1 0 0 16-3584
+chrM 4335 1 0 0 0 1 0 0 16-3584
+chrM 4336 1 0 0 0 1 0 0 16-3584
+chrM 4337 1 0 0 0 1 0 0 16-3584
+chrM 4338 1 0 0 1 0 0 0 16-3584
+chrM 4339 1 0 0 0 1 0 0 16-3584
+chrM 4340 1 1 0 0 0 0 0 16-3584
+chrM 4341 1 0 0 0 1 0 0 16-3584
+chrM 4342 1 0 0 0 1 0 0 16-3584
+chrM 4343 1 1 0 0 0 0 0 16-3584
+chrM 4344 1 0 0 1 0 0 0 16-3584
+chrM 4345 1 0 0 0 1 0 0 16-3584
+chrM 4346 1 0 1 0 0 0 0 16-3584
+chrM 4347 1 1 0 0 0 0 0 16-3584
+chrM 4348 1 0 1 0 0 0 0 16-3584
+chrM 4349 1 0 0 0 1 0 0 16-3584
+chrM 4350 1 0 0 1 0 0 0 16-3584
+chrM 4351 1 0 0 0 1 0 0 16-3584
+chrM 4352 1 0 0 0 1 0 0 16-3584
+chrM 4353 1 0 1 0 0 0 0 16-3584
+chrM 4354 1 1 0 0 0 0 0 16-3584
+chrM 4355 1 0 0 0 1 0 0 16-3584
+chrM 4356 1 0 0 0 1 0 0 16-3584
+chrM 4357 1 0 0 0 1 0 0 16-3584
+chrM 4358 1 0 0 1 0 0 0 16-3584
+chrM 4359 1 1 0 0 0 0 0 16-3584
+chrM 4360 1 1 0 0 0 0 0 16-3584
+chrM 4361 1 0 0 0 1 0 0 16-3584
+chrM 4362 1 0 0 1 0 0 0 16-3584
+chrM 4814 2 0 2 0 0 0 0 16-3584
+chrM 4815 2 1 0 1 0 0 0 16-3584
+chrM 4816 2 0 1 1 0 0 0 16-3584
+chrM 4817 2 0 1 1 0 0 0 16-3584
+chrM 4818 2 0 0 0 2 0 0 16-3584
+chrM 4819 2 0 0 0 2 0 0 16-3584
+chrM 4820 2 0 0 0 2 0 0 16-3584
+chrM 4821 2 0 0 2 0 0 0 16-3584
+chrM 4822 2 0 0 0 2 0 0 16-3584
+chrM 4823 2 1 1 0 0 0 0 16-3584
+chrM 4824 2 1 1 0 0 0 0 16-3584
+chrM 4825 2 1 0 1 0 0 0 16-3584
+chrM 4826 2 1 0 0 1 0 0 16-3584
+chrM 4827 2 1 0 0 1 0 0 16-3584
+chrM 4828 2 0 0 1 1 0 0 16-3584
+chrM 4829 2 0 0 1 1 0 0 16-3584
+chrM 4830 2 0 1 0 1 0 0 16-3584
+chrM 4831 2 0 1 0 1 0 0 16-3584
+chrM 4832 4 0 2 2 0 0 0 16-3584
+chrM 4833 4 1 2 1 0 0 0 16-3584
+chrM 4834 4 2 1 1 0 0 0 16-3584
+chrM 4835 4 1 1 1 1 0 0 16-3584
+chrM 4836 4 3 0 0 1 0 0 16-3584
+chrM 4837 4 1 1 0 2 0 0 16-3584
+chrM 4838 4 0 2 2 0 0 0 16-3584
+chrM 4839 4 1 0 0 3 0 0 16-3584
+chrM 4840 4 0 0 3 1 0 0 16-3584
+chrM 4841 4 1 2 1 0 0 0 16-3584
+chrM 4842 4 0 1 1 2 0 0 16-3584
+chrM 4843 4 0 2 0 2 0 0 16-3584
+chrM 4844 4 2 1 1 0 0 0 16-3584
+chrM 4845 4 1 2 0 1 0 0 16-3584
+chrM 4846 4 1 2 0 1 0 0 16-3584
+chrM 4847 4 0 1 1 2 0 0 16-3584
+chrM 4848 4 1 0 2 1 0 0 16-3584
+chrM 4849 4 2 0 2 0 0 0 16-3584
+chrM 4850 4 2 1 1 0 0 0 16-3584
+chrM 4851 4 1 0 1 2 0 0 16-3584
+chrM 4852 4 1 0 3 0 0 0 16-3584
+chrM 4853 6 1 3 1 1 0 0 16-3584
+chrM 4854 6 0 1 1 4 0 0 16-3584
+chrM 4855 6 2 1 1 2 0 0 16-3584
+chrM 4856 6 1 0 2 3 0 0 16-3584
+chrM 4857 6 3 1 0 2 0 0 16-3584
+chrM 4858 6 0 3 1 2 0 0 16-3584
+chrM 4859 6 2 0 2 2 0 0 16-3584
+chrM 4860 6 1 1 1 3 0 0 16-3584
+chrM 4861 6 2 2 0 2 0 0 16-3584
+chrM 4862 6 3 1 1 1 0 0 16-3584
+chrM 4863 6 0 2 2 2 0 0 16-3584
+chrM 4864 6 1 2 2 1 0 0 16-3584
+chrM 4865 6 2 1 1 2 0 0 16-3584
+chrM 4866 6 3 2 0 1 0 0 16-3584
+chrM 4867 6 2 1 3 0 0 0 16-3584
+chrM 4868 6 3 0 2 1 0 0 16-3584
+chrM 4869 6 0 1 3 2 0 0 16-3584
+chrM 4870 6 1 1 2 2 0 0 16-3584
+chrM 4871 6 3 0 1 2 0 0 16-3584
+chrM 4872 6 1 3 1 1 0 0 16-3584
+chrM 4873 6 0 1 2 3 0 0 16-3584
+chrM 4874 6 4 0 0 2 0 0 16-3584
+chrM 4875 6 0 3 2 1 0 0 16-3584
+chrM 4876 6 0 3 2 1 0 0 16-3584
+chrM 4877 6 3 0 2 1 0 0 16-3584
+chrM 4878 6 5 1 0 0 0 0 16-3584
+chrM 4879 6 2 2 1 1 0 0 16-3584
+chrM 4880 6 2 2 1 1 0 0 16-3584
+chrM 4881 6 1 1 3 1 0 0 16-3584
+chrM 4882 6 1 1 2 2 0 0 16-3584
+chrM 4883 6 1 1 1 3 0 0 16-3584
+chrM 4884 6 1 1 2 2 0 0 16-3584
+chrM 4885 6 1 2 1 2 0 0 16-3584
+chrM 4886 6 1 3 0 2 0 0 16-3584
+chrM 4887 6 2 2 2 0 0 0 16-3584
+chrM 4888 6 2 1 1 2 0 0 16-3584
+chrM 4889 6 1 3 2 0 0 0 16-3584
+chrM 4890 6 1 2 1 2 0 0 16-3584
+chrM 4891 6 0 3 0 3 0 0 16-3584
+chrM 4892 6 2 4 0 0 0 0 16-3584
+chrM 4893 6 1 3 1 1 0 0 16-3584
+chrM 4894 6 3 1 1 1 0 0 16-3584
+chrM 4895 6 0 1 2 3 0 0 16-3584
+chrM 4896 6 1 1 3 1 0 0 16-3584
+chrM 4897 6 2 1 2 1 0 0 16-3584
+chrM 4898 6 3 3 0 0 0 0 16-3584
+chrM 4899 6 1 4 0 1 0 0 16-3584
+chrM 4900 6 2 0 2 2 0 0 16-3584
+chrM 4901 6 1 2 2 1 0 0 16-3584
+chrM 4902 6 1 3 1 1 0 0 16-3584
+chrM 4903 6 2 2 1 1 0 0 16-3584
+chrM 4904 6 0 2 3 1 0 0 16-3584
+chrM 4905 6 0 1 4 1 0 0 16-3584
+chrM 4906 6 3 0 1 2 0 0 16-3584
+chrM 4907 6 1 1 1 3 0 0 16-3584
+chrM 4908 6 1 0 1 4 0 0 16-3584
+chrM 4909 6 3 2 1 0 0 0 16-3584
+chrM 4910 6 2 3 0 1 0 0 16-3584
+chrM 4911 6 1 2 2 1 0 0 16-3584
+chrM 4912 6 0 3 2 1 0 0 16-3584
+chrM 4913 6 1 0 1 4 0 0 16-3584
+chrM 4914 6 1 1 0 4 0 0 16-3584
+chrM 4915 6 2 0 1 3 0 0 16-3584
+chrM 4916 6 1 2 1 2 0 0 16-3584
+chrM 4917 6 0 1 3 2 0 0 16-3584
+chrM 4918 6 4 1 1 0 0 0 16-3584
+chrM 4919 6 1 1 0 4 0 0 16-3584
+chrM 4920 6 3 0 2 1 0 0 16-3584
+chrM 4921 6 2 3 0 1 0 0 16-3584
+chrM 4922 6 2 0 1 3 0 0 16-3584
+chrM 4923 6 1 1 3 1 0 0 16-3584
+chrM 4924 6 1 2 1 2 0 0 16-3584
+chrM 4925 6 0 1 3 2 0 0 16-3584
+chrM 4926 6 2 2 0 2 0 0 16-3584
+chrM 4927 6 1 3 1 1 0 0 16-3584
+chrM 4928 6 1 1 2 2 0 0 16-3584
+chrM 4929 6 3 1 0 2 0 0 16-3584
+chrM 4930 6 3 1 1 1 0 0 16-3584
+chrM 4931 6 0 1 3 2 0 0 16-3584
+chrM 4932 6 1 3 0 2 0 0 16-3584
+chrM 4933 6 2 1 3 0 0 0 16-3584
+chrM 4934 6 1 4 0 1 0 0 16-3584
+chrM 4935 6 1 1 2 2 0 0 16-3584
+chrM 4936 6 1 3 0 2 0 0 16-3584
+chrM 4937 6 3 0 1 2 0 0 16-3584
+chrM 4938 6 1 2 1 2 0 0 16-3584
+chrM 4939 6 1 3 1 1 0 0 16-3584
+chrM 4940 6 3 2 1 0 0 0 16-3584
+chrM 4941 6 2 1 1 2 0 0 16-3584
+chrM 4942 6 1 3 0 2 0 0 16-3584
+chrM 4943 6 3 1 1 1 0 0 16-3584
+chrM 4944 6 1 1 2 2 0 0 16-3584
+chrM 4945 6 0 3 0 3 0 0 16-3584
+chrM 4946 6 2 1 1 2 0 0 16-3584
+chrM 4947 6 1 3 0 2 0 0 16-3584
+chrM 4948 6 1 3 0 2 0 0 16-3584
+chrM 4949 6 1 3 1 1 0 0 16-3584
+chrM 4950 6 2 2 1 1 0 0 16-3584
+chrM 4951 6 2 0 3 1 0 0 16-3584
+chrM 4952 6 3 3 0 0 0 0 16-3584
+chrM 4953 6 1 2 2 1 0 0 16-3584
+chrM 4954 6 2 1 3 0 0 0 16-3584
+chrM 4955 6 3 1 0 2 0 0 16-3584
+chrM 4956 6 0 1 1 4 0 0 16-3584
+chrM 4957 6 1 0 2 3 0 0 16-3584
+chrM 4958 4 0 2 2 0 0 0 16-3584
+chrM 4959 4 2 1 1 0 0 0 16-3584
+chrM 4960 4 0 2 0 2 0 0 16-3584
+chrM 4961 4 2 1 0 1 0 0 16-3584
+chrM 4962 4 1 0 1 2 0 0 16-3584
+chrM 4963 4 1 0 1 2 0 0 16-3584
+chrM 4964 4 1 1 1 1 0 0 16-3584
+chrM 4965 4 1 2 0 1 0 0 16-3584
+chrM 4966 4 1 0 3 0 0 0 16-3584
+chrM 4967 4 1 1 0 2 0 0 16-3584
+chrM 4968 4 2 0 0 2 0 0 16-3584
+chrM 4969 4 0 2 1 1 0 0 16-3584
+chrM 4970 4 1 1 1 1 0 0 16-3584
+chrM 4971 4 2 0 0 2 0 0 16-3584
+chrM 4972 4 0 1 1 2 0 0 16-3584
+chrM 4973 4 1 1 1 1 0 0 16-3584
+chrM 4974 4 3 1 0 0 0 0 16-3584
+chrM 4975 4 3 0 1 0 0 0 16-3584
+chrM 4976 4 0 1 1 2 0 0 16-3584
+chrM 4977 4 0 3 0 1 0 0 16-3584
+chrM 4978 2 0 0 2 0 0 0 16-3584
+chrM 4979 2 1 1 0 0 0 0 16-3584
+chrM 4980 2 0 2 0 0 0 0 16-3584
+chrM 4981 2 1 0 1 0 0 0 16-3584
+chrM 4982 2 0 0 0 2 0 0 16-3584
+chrM 4983 2 0 0 0 2 0 0 16-3584
+chrM 4984 2 0 1 0 1 0 0 16-3584
+chrM 4985 2 0 1 0 1 0 0 16-3584
+chrM 4986 2 2 0 0 0 0 0 16-3584
+chrM 4987 2 1 1 0 0 0 0 16-3584
+chrM 4988 2 2 0 0 0 0 0 16-3584
+chrM 4989 2 1 0 0 1 0 0 16-3584
+chrM 4990 2 1 0 0 1 0 0 16-3584
+chrM 4991 2 1 0 0 1 0 0 16-3584
+chrM 4992 2 1 1 0 0 0 0 16-3584
+chrM 4993 2 1 1 0 0 0 0 16-3584
+chrM 4994 2 1 1 0 0 0 0 16-3584
+chrM 4995 2 2 0 0 0 0 0 16-3584
+chrM 4996 2 0 0 1 1 0 0 16-3584
+chrM 4997 2 0 0 0 2 0 0 16-3584
+chrM 4998 2 1 0 0 1 0 0 16-3584
+chrM 5069 1 0 1 0 0 0 0 16-3584
+chrM 5070 1 0 0 0 1 0 0 16-3584
+chrM 5071 1 0 1 0 0 0 0 16-3584
+chrM 5072 1 0 1 0 0 0 0 16-3584
+chrM 5073 1 0 0 1 0 0 0 16-3584
+chrM 5074 1 0 1 0 0 0 0 16-3584
+chrM 5075 1 1 0 0 0 0 0 16-3584
+chrM 5076 1 0 0 1 0 0 0 16-3584
+chrM 5077 1 1 0 0 0 0 0 16-3584
+chrM 5078 1 0 0 0 1 0 0 16-3584
+chrM 5079 1 0 0 0 1 0 0 16-3584
+chrM 5080 1 1 0 0 0 0 0 16-3584
+chrM 5081 1 0 1 0 0 0 0 16-3584
+chrM 5082 2 1 0 0 1 0 0 16-3584
+chrM 5083 2 2 0 0 0 0 0 16-3584
+chrM 5084 2 1 0 1 0 0 0 16-3584
+chrM 5085 2 0 1 1 0 0 0 16-3584
+chrM 5086 2 1 0 0 1 0 0 16-3584
+chrM 5087 2 0 1 0 1 0 0 16-3584
+chrM 5088 2 0 2 0 0 0 0 16-3584
+chrM 5089 2 1 1 0 0 0 0 16-3584
+chrM 5090 2 2 0 0 0 0 0 16-3584
+chrM 5091 2 0 1 1 0 0 0 16-3584
+chrM 5092 2 0 1 1 0 0 0 16-3584
+chrM 5093 2 1 0 0 1 0 0 16-3584
+chrM 5094 2 1 1 0 0 0 0 16-3584
+chrM 5095 2 0 0 1 1 0 0 16-3584
+chrM 5096 2 1 0 1 0 0 0 16-3584
+chrM 5097 2 0 1 0 1 0 0 16-3584
+chrM 5098 2 0 2 0 0 0 0 16-3584
+chrM 5099 2 1 1 0 0 0 0 16-3584
+chrM 5100 2 0 1 0 1 0 0 16-3584
+chrM 5101 2 0 1 0 1 0 0 16-3584
+chrM 5102 2 1 0 0 1 0 0 16-3584
+chrM 5103 2 1 0 0 1 0 0 16-3584
+chrM 5104 2 0 0 1 1 0 0 16-3584
+chrM 5105 2 0 1 1 0 0 0 16-3584
+chrM 5106 2 0 0 1 1 0 0 16-3584
+chrM 5107 2 0 1 0 1 0 0 16-3584
+chrM 5108 2 1 0 1 0 0 0 16-3584
+chrM 5109 2 1 1 0 0 0 0 16-3584
+chrM 5110 2 0 1 0 1 0 0 16-3584
+chrM 5111 2 1 0 0 1 0 0 16-3584
+chrM 5112 2 2 0 0 0 0 0 16-3584
+chrM 5113 2 0 1 1 0 0 0 16-3584
+chrM 5114 2 0 0 1 1 0 0 16-3584
+chrM 5115 2 0 2 0 0 0 0 16-3584
+chrM 5116 2 0 0 0 2 0 0 16-3584
+chrM 5117 2 1 1 0 0 0 0 16-3584
+chrM 5118 2 0 0 2 0 0 0 16-3584
+chrM 5119 2 0 2 0 0 0 0 16-3584
+chrM 5120 2 0 0 1 1 0 0 16-3584
+chrM 5121 2 0 0 2 0 0 0 16-3584
+chrM 5122 2 1 1 0 0 0 0 16-3584
+chrM 5123 2 0 1 1 0 0 0 16-3584
+chrM 5124 2 0 2 0 0 0 0 16-3584
+chrM 5125 2 0 1 0 1 0 0 16-3584
+chrM 5126 2 1 0 1 0 0 0 16-3584
+chrM 5127 2 1 1 0 0 0 0 16-3584
+chrM 5128 2 0 0 0 2 0 0 16-3584
+chrM 5129 2 1 1 0 0 0 0 16-3584
+chrM 5130 2 0 1 1 0 0 0 16-3584
+chrM 5131 2 1 0 0 1 0 0 16-3584
+chrM 5132 2 0 1 0 1 0 0 16-3584
+chrM 5133 2 0 0 1 1 0 0 16-3584
+chrM 5134 2 1 1 0 0 0 0 16-3584
+chrM 5135 2 0 0 1 1 0 0 16-3584
+chrM 5136 2 0 0 0 2 0 0 16-3584
+chrM 5137 2 1 0 1 0 0 0 16-3584
+chrM 5138 2 0 0 1 1 0 0 16-3584
+chrM 5139 2 1 0 1 0 0 0 16-3584
+chrM 5140 2 0 2 0 0 0 0 16-3584
+chrM 5141 2 1 0 1 0 0 0 16-3584
+chrM 5142 2 0 0 1 1 0 0 16-3584
+chrM 5143 2 0 0 0 2 0 0 16-3584
+chrM 5144 2 0 0 2 0 0 0 16-3584
+chrM 5145 2 0 0 0 2 0 0 16-3584
+chrM 5146 2 0 0 2 0 0 0 16-3584
+chrM 5147 2 0 0 0 2 0 0 16-3584
+chrM 5148 2 1 0 0 1 0 0 16-3584
+chrM 5149 2 1 0 0 1 0 0 16-3584
+chrM 5150 2 2 0 0 0 0 0 16-3584
+chrM 5151 2 1 0 0 1 0 0 16-3584
+chrM 5152 2 0 1 1 0 0 0 16-3584
+chrM 5153 2 0 1 1 0 0 0 16-3584
+chrM 5154 2 0 0 0 2 0 0 16-3584
+chrM 5155 2 1 0 0 1 0 0 16-3584
+chrM 5156 2 0 1 1 0 0 0 16-3584
+chrM 5157 2 0 1 0 1 0 0 16-3584
+chrM 5158 2 1 0 0 1 0 0 16-3584
+chrM 5159 2 1 1 0 0 0 0 16-3584
+chrM 5160 2 1 0 1 0 0 0 16-3584
+chrM 5161 2 0 0 1 1 0 0 16-3584
+chrM 5162 2 1 0 1 0 0 0 16-3584
+chrM 5163 2 1 0 1 0 0 0 16-3584
+chrM 5164 2 0 0 2 0 0 0 16-3584
+chrM 5165 2 0 0 2 0 0 0 16-3584
+chrM 5166 2 1 0 1 0 0 0 16-3584
+chrM 5167 2 0 0 1 1 0 0 16-3584
+chrM 5168 2 1 0 1 0 0 0 16-3584
+chrM 5169 2 1 1 0 0 0 0 16-3584
+chrM 5170 2 0 0 1 1 0 0 16-3584
+chrM 5171 2 0 1 1 0 0 0 16-3584
+chrM 5172 2 0 0 0 2 0 0 16-3584
+chrM 5173 2 1 0 1 0 0 0 16-3584
+chrM 5174 2 0 1 0 1 0 0 16-3584
+chrM 5175 2 1 1 0 0 0 0 16-3584
+chrM 5176 2 0 1 1 0 0 0 16-3584
+chrM 5177 2 0 1 0 1 0 0 16-3584
+chrM 5178 2 1 1 0 0 0 0 16-3584
+chrM 5179 2 0 1 1 0 0 0 16-3584
+chrM 5180 2 0 1 1 0 0 0 16-3584
+chrM 5181 2 1 0 0 1 0 0 16-3584
+chrM 5182 2 1 1 0 0 0 0 16-3584
+chrM 5183 2 1 0 1 0 0 0 16-3584
+chrM 5184 2 0 2 0 0 0 0 16-3584
+chrM 5185 2 1 1 0 0 0 0 16-3584
+chrM 5186 2 0 0 2 0 0 0 16-3584
+chrM 5187 2 2 0 0 0 0 0 16-3584
+chrM 5188 2 0 0 2 0 0 0 16-3584
+chrM 5189 2 0 0 2 0 0 0 16-3584
+chrM 5190 2 1 1 0 0 0 0 16-3584
+chrM 5191 2 1 1 0 0 0 0 16-3584
+chrM 5192 2 1 0 0 1 0 0 16-3584
+chrM 5193 2 0 1 0 1 0 0 16-3584
+chrM 5194 2 1 0 1 0 0 0 16-3584
+chrM 5195 2 1 0 0 1 0 0 16-3584
+chrM 5196 2 0 1 1 0 0 0 16-3584
+chrM 5197 2 0 1 1 0 0 0 16-3584
+chrM 5198 2 0 1 0 1 0 0 16-3584
+chrM 5199 2 1 1 0 0 0 0 16-3584
+chrM 5200 2 0 1 1 0 0 0 16-3584
+chrM 5201 2 0 0 1 1 0 0 16-3584
+chrM 5202 2 0 1 0 1 0 0 16-3584
+chrM 5203 2 0 0 0 2 0 0 16-3584
+chrM 5204 2 1 0 1 0 0 0 16-3584
+chrM 5205 2 2 0 0 0 0 0 16-3584
+chrM 5206 2 2 0 0 0 0 0 16-3584
+chrM 5207 2 0 0 0 2 0 0 16-3584
+chrM 5208 2 1 0 0 1 0 0 16-3584
+chrM 5209 2 2 0 0 0 0 0 16-3584
+chrM 5210 2 0 1 1 0 0 0 16-3584
+chrM 5211 2 2 0 0 0 0 0 16-3584
+chrM 5212 2 1 1 0 0 0 0 16-3584
+chrM 5213 2 0 2 0 0 0 0 16-3584
+chrM 5214 2 0 0 1 1 0 0 16-3584
+chrM 5229 1 0 0 1 0 0 0 16-3584
+chrM 5230 1 1 0 0 0 0 0 16-3584
+chrM 5231 1 1 0 0 0 0 0 16-3584
+chrM 5232 1 0 1 0 0 0 0 16-3584
+chrM 5233 1 0 1 0 0 0 0 16-3584
+chrM 5234 1 0 0 0 1 0 0 16-3584
+chrM 5235 1 0 0 1 0 0 0 16-3584
+chrM 5236 1 0 0 1 0 0 0 16-3584
+chrM 5237 1 1 0 0 0 0 0 16-3584
+chrM 5238 1 1 0 0 0 0 0 16-3584
+chrM 5239 1 0 0 0 1 0 0 16-3584
+chrM 5240 1 0 0 1 0 0 0 16-3584
+chrM 5241 1 0 0 0 1 0 0 16-3584
+chrM 5242 1 0 1 0 0 0 0 16-3584
+chrM 5243 1 0 0 1 0 0 0 16-3584
+chrM 5244 1 0 1 0 0 0 0 16-3584
+chrM 5245 1 1 0 0 0 0 0 16-3584
+chrM 5246 1 0 0 0 1 0 0 16-3584
+chrM 5247 1 0 0 1 0 0 0 16-3584
+chrM 5248 1 0 0 1 0 0 0 16-3584
+chrM 5249 1 0 0 1 0 0 0 16-3584
+chrM 5250 1 1 0 0 0 0 0 16-3584
+chrM 5251 1 0 0 0 1 0 0 16-3584
+chrM 5252 1 0 0 1 0 0 0 16-3584
+chrM 5253 1 0 1 0 0 0 0 16-3584
+chrM 5254 1 1 0 0 0 0 0 16-3584
+chrM 5255 1 0 1 0 0 0 0 16-3584
+chrM 5256 1 0 0 0 1 0 0 16-3584
+chrM 5257 1 0 0 0 1 0 0 16-3584
+chrM 5258 1 0 1 0 0 0 0 16-3584
+chrM 5259 1 0 0 0 1 0 0 16-3584
+chrM 5260 1 0 1 0 0 0 0 16-3584
+chrM 5261 1 1 0 0 0 0 0 16-3584
+chrM 5262 1 0 0 1 0 0 0 16-3584
+chrM 5263 1 1 0 0 0 0 0 16-3584
+chrM 5264 1 0 1 0 0 0 0 16-3584
+chrM 5265 1 0 0 0 1 0 0 16-3584
+chrM 5266 1 0 0 0 1 0 0 16-3584
+chrM 5267 1 0 0 1 0 0 0 16-3584
+chrM 5268 1 0 0 0 1 0 0 16-3584
+chrM 5269 1 1 0 0 0 0 0 16-3584
+chrM 5270 1 0 1 0 0 0 0 16-3584
+chrM 5271 1 1 0 0 0 0 0 16-3584
+chrM 5272 1 1 0 0 0 0 0 16-3584
+chrM 5273 1 1 0 0 0 0 0 16-3584
+chrM 5274 1 1 0 0 0 0 0 16-3584
+chrM 5275 1 0 1 0 0 0 0 16-3584
+chrM 5276 1 1 0 0 0 0 0 16-3584
+chrM 5277 1 0 0 0 1 0 0 16-3584
+chrM 5278 1 0 0 0 1 0 0 16-3584
+chrM 5279 1 1 0 0 0 0 0 16-3584
+chrM 5280 1 1 0 0 0 0 0 16-3584
+chrM 5281 1 0 0 1 0 0 0 16-3584
+chrM 5282 1 0 0 1 0 0 0 16-3584
+chrM 5283 1 0 0 0 1 0 0 16-3584
+chrM 5284 1 0 0 1 0 0 0 16-3584
+chrM 5285 1 0 0 1 0 0 0 16-3584
+chrM 5286 1 1 0 0 0 0 0 16-3584
+chrM 5287 1 0 0 1 0 0 0 16-3584
+chrM 5288 1 0 1 0 0 0 0 16-3584
+chrM 5289 1 0 0 1 0 0 0 16-3584
+chrM 5290 1 1 0 0 0 0 0 16-3584
+chrM 5291 1 0 0 0 1 0 0 16-3584
+chrM 5292 1 0 0 1 0 0 0 16-3584
+chrM 5293 1 0 0 0 1 0 0 16-3584
+chrM 5294 1 1 0 0 0 0 0 16-3584
+chrM 5295 1 0 0 1 0 0 0 16-3584
+chrM 5296 1 0 0 0 1 0 0 16-3584
+chrM 5297 1 0 1 0 0 0 0 16-3584
+chrM 5298 1 0 0 1 0 0 0 16-3584
+chrM 5299 1 1 0 0 0 0 0 16-3584
+chrM 5300 1 0 0 0 1 0 0 16-3584
+chrM 5301 1 0 0 1 0 0 0 16-3584
+chrM 5302 1 0 0 0 1 0 0 16-3584
+chrM 5303 1 0 0 1 0 0 0 16-3584
+chrM 5304 1 0 0 1 0 0 0 16-3584
+chrM 5305 1 0 0 1 0 0 0 16-3584
+chrM 5306 1 0 1 0 0 0 0 16-3584
+chrM 5307 1 0 0 1 0 0 0 16-3584
+chrM 5308 1 0 0 0 1 0 0 16-3584
+chrM 5309 1 0 0 0 1 0 0 16-3584
+chrM 5310 1 0 1 0 0 0 0 16-3584
+chrM 5311 1 1 0 0 0 0 0 16-3584
+chrM 5312 1 0 0 0 1 0 0 16-3584
+chrM 5313 1 0 0 0 1 0 0 16-3584
+chrM 5314 1 0 0 0 1 0 0 16-3584
+chrM 5315 1 0 1 0 0 0 0 16-3584
+chrM 5316 1 0 0 1 0 0 0 16-3584
+chrM 5317 1 0 0 1 0 0 0 16-3584
+chrM 5318 1 1 0 0 0 0 0 16-3584
+chrM 5319 1 1 0 0 0 0 0 16-3584
+chrM 5320 1 0 1 0 0 0 0 16-3584
+chrM 5321 1 1 0 0 0 0 0 16-3584
+chrM 5322 1 1 0 0 0 0 0 16-3584
+chrM 5323 1 1 0 0 0 0 0 16-3584
+chrM 5324 1 0 1 0 0 0 0 16-3584
+chrM 5325 1 0 1 0 0 0 0 16-3584
+chrM 5326 1 0 1 0 0 0 0 16-3584
+chrM 5327 1 0 0 1 0 0 0 16-3584
+chrM 5328 1 1 0 0 0 0 0 16-3584
+chrM 5329 1 0 0 1 0 0 0 16-3584
+chrM 5330 1 0 0 0 1 0 0 16-3584
+chrM 5331 1 0 1 0 0 0 0 16-3584
+chrM 5332 1 1 0 0 0 0 0 16-3584
+chrM 5333 1 0 0 0 1 0 0 16-3584
+chrM 5334 1 0 0 1 0 0 0 16-3584
+chrM 5335 1 0 0 0 1 0 0 16-3584
+chrM 5336 1 0 0 0 1 0 0 16-3584
+chrM 5337 1 0 0 0 1 0 0 16-3584
+chrM 5338 1 0 0 1 0 0 0 16-3584
+chrM 5339 1 0 0 1 0 0 0 16-3584
+chrM 5340 1 0 1 0 0 0 0 16-3584
+chrM 5341 1 0 1 0 0 0 0 16-3584
+chrM 5342 1 0 0 0 1 0 0 16-3584
+chrM 5343 1 1 0 0 0 0 0 16-3584
+chrM 5344 1 1 0 0 0 0 0 16-3584
+chrM 5345 1 1 0 0 0 0 0 16-3584
+chrM 5346 1 1 0 0 0 0 0 16-3584
+chrM 5347 1 0 1 0 0 0 0 16-3584
+chrM 5348 1 0 1 0 0 0 0 16-3584
+chrM 5349 1 0 0 1 0 0 0 16-3584
+chrM 5350 1 1 0 0 0 0 0 16-3584
+chrM 5351 1 1 0 0 0 0 0 16-3584
+chrM 5352 1 0 0 1 0 0 0 16-3584
+chrM 5353 1 0 1 0 0 0 0 16-3584
+chrM 5354 1 1 0 0 0 0 0 16-3584
+chrM 5355 1 0 0 1 0 0 0 16-3584
+chrM 5356 1 0 0 1 0 0 0 16-3584
+chrM 5357 1 0 1 0 0 0 0 16-3584
+chrM 5358 1 0 0 1 0 0 0 16-3584
+chrM 5359 1 0 0 1 0 0 0 16-3584
+chrM 5360 1 0 0 1 0 0 0 16-3584
+chrM 5361 1 0 1 0 0 0 0 16-3584
+chrM 5362 1 1 0 0 0 0 0 16-3584
+chrM 5363 1 0 1 0 0 0 0 16-3584
+chrM 5364 1 0 0 1 0 0 0 16-3584
+chrM 5365 1 0 1 0 0 0 0 16-3584
+chrM 5366 1 0 1 0 0 0 0 16-3584
+chrM 5367 1 0 1 0 0 0 0 16-3584
+chrM 5368 1 0 0 0 1 0 0 16-3584
+chrM 5369 1 0 1 0 0 0 0 16-3584
+chrM 5370 1 0 1 0 0 0 0 16-3584
+chrM 5371 1 0 0 1 0 0 0 16-3584
+chrM 5372 1 0 1 0 0 0 0 16-3584
+chrM 5413 1 0 1 0 0 0 0 16-3584
+chrM 5414 1 1 0 0 0 0 0 16-3584
+chrM 5415 1 0 1 0 0 0 0 16-3584
+chrM 5416 1 0 0 1 0 0 0 16-3584
+chrM 5417 1 0 0 1 0 0 0 16-3584
+chrM 5418 1 1 0 0 0 0 0 16-3584
+chrM 5419 1 0 0 0 1 0 0 16-3584
+chrM 5420 1 1 0 0 0 0 0 16-3584
+chrM 5421 1 0 1 0 0 0 0 16-3584
+chrM 5422 1 0 1 0 0 0 0 16-3584
+chrM 5423 1 0 0 1 0 0 0 16-3584
+chrM 5424 1 0 1 0 0 0 0 16-3584
+chrM 5425 1 0 1 0 0 0 0 16-3584
+chrM 5426 1 0 1 0 0 0 0 16-3584
+chrM 5427 1 0 0 1 0 0 0 16-3584
+chrM 5428 1 0 1 0 0 0 0 16-3584
+chrM 5429 1 0 1 0 0 0 0 16-3584
+chrM 5430 1 0 1 0 0 0 0 16-3584
+chrM 5431 1 0 0 1 0 0 0 16-3584
+chrM 5432 1 1 0 0 0 0 0 16-3584
+chrM 5433 1 0 1 0 0 0 0 16-3584
+chrM 5434 1 0 0 0 1 0 0 16-3584
+chrM 5435 1 0 0 0 1 0 0 16-3584
+chrM 5436 1 0 1 0 0 0 0 16-3584
+chrM 5437 1 0 0 1 0 0 0 16-3584
+chrM 5438 1 1 0 0 0 0 0 16-3584
+chrM 5439 1 0 1 0 0 0 0 16-3584
+chrM 5440 1 0 0 0 1 0 0 16-3584
+chrM 5441 1 0 0 0 1 0 0 16-3584
+chrM 5442 1 0 0 1 0 0 0 16-3584
+chrM 5443 1 1 0 0 0 0 0 16-3584
+chrM 5444 1 0 0 1 0 0 0 16-3584
+chrM 5445 1 0 0 0 1 0 0 16-3584
+chrM 5446 1 0 0 1 0 0 0 16-3584
+chrM 5447 1 0 0 1 0 0 0 16-3584
+chrM 5448 1 1 0 0 0 0 0 16-3584
+chrM 5449 1 0 1 0 0 0 0 16-3584
+chrM 5450 1 1 0 0 0 0 0 16-3584
+chrM 5451 1 0 1 0 0 0 0 16-3584
+chrM 5452 1 1 0 0 0 0 0 16-3584
+chrM 5453 1 0 0 0 1 0 0 16-3584
+chrM 5454 1 0 1 0 0 0 0 16-3584
+chrM 5455 1 1 0 0 0 0 0 16-3584
+chrM 5456 1 1 0 0 0 0 0 16-3584
+chrM 5457 1 0 0 0 1 0 0 16-3584
+chrM 5458 1 1 0 0 0 0 0 16-3584
+chrM 5459 1 0 0 0 1 0 0 16-3584
+chrM 5460 1 0 0 1 0 0 0 16-3584
+chrM 5461 1 0 0 0 1 0 0 16-3584
+chrM 5462 1 0 0 0 1 0 0 16-3584
+chrM 5463 1 0 1 0 0 0 0 16-3584
+chrM 5464 1 0 0 0 1 0 0 16-3584
+chrM 5465 1 0 0 0 1 0 0 16-3584
+chrM 5466 1 0 1 0 0 0 0 16-3584
+chrM 5467 1 0 0 0 1 0 0 16-3584
+chrM 5468 1 0 0 0 1 0 0 16-3584
+chrM 5469 1 1 0 0 0 0 0 16-3584
+chrM 5470 1 0 0 1 0 0 0 16-3584
+chrM 5471 1 0 1 0 0 0 0 16-3584
+chrM 5472 1 1 0 0 0 0 0 16-3584
+chrM 5473 1 0 0 1 0 0 0 16-3584
+chrM 5474 1 1 0 0 0 0 0 16-3584
+chrM 5475 1 1 0 0 0 0 0 16-3584
+chrM 5476 1 0 1 0 0 0 0 16-3584
+chrM 5477 1 0 0 0 1 0 0 16-3584
+chrM 5478 1 0 0 0 1 0 0 16-3584
+chrM 5479 1 1 0 0 0 0 0 16-3584
+chrM 5480 1 1 0 0 0 0 0 16-3584
+chrM 5481 1 1 0 0 0 0 0 16-3584
+chrM 5482 1 0 1 0 0 0 0 16-3584
+chrM 5483 1 0 1 0 0 0 0 16-3584
+chrM 5484 1 0 1 0 0 0 0 16-3584
+chrM 5485 1 0 1 0 0 0 0 16-3584
+chrM 5486 1 0 1 0 0 0 0 16-3584
+chrM 5487 1 0 0 0 1 0 0 16-3584
+chrM 5488 1 0 0 0 1 0 0 16-3584
+chrM 5489 1 1 0 0 0 0 0 16-3584
+chrM 5490 1 0 0 1 0 0 0 16-3584
+chrM 5491 1 0 1 0 0 0 0 16-3584
+chrM 5492 1 0 0 0 1 0 0 16-3584
+chrM 5493 1 0 0 1 0 0 0 16-3584
+chrM 5494 1 0 0 0 1 0 0 16-3584
+chrM 5495 1 0 1 0 0 0 0 16-3584
+chrM 5496 1 0 0 0 1 0 0 16-3584
+chrM 5497 1 1 0 0 0 0 0 16-3584
+chrM 5498 1 1 0 0 0 0 0 16-3584
+chrM 5499 1 1 0 0 0 0 0 16-3584
+chrM 5500 1 0 1 0 0 0 0 16-3584
+chrM 5501 1 0 0 1 0 0 0 16-3584
+chrM 5502 1 0 0 0 1 0 0 16-3584
+chrM 5503 1 0 0 1 0 0 0 16-3584
+chrM 5504 1 0 1 0 0 0 0 16-3584
+chrM 5505 1 0 0 0 1 0 0 16-3584
+chrM 5506 1 1 0 0 0 0 0 16-3584
+chrM 5507 1 0 1 0 0 0 0 16-3584
+chrM 5508 1 0 0 0 1 0 0 16-3584
+chrM 5509 1 1 0 0 0 0 0 16-3584
+chrM 5510 1 0 0 1 0 0 0 16-3584
+chrM 5511 1 1 0 0 0 0 0 16-3584
+chrM 5512 1 0 1 0 0 0 0 16-3584
+chrM 5513 1 0 0 0 1 0 0 16-3584
+chrM 5514 1 0 1 0 0 0 0 16-3584
+chrM 5515 1 0 0 1 0 0 0 16-3584
+chrM 5516 1 0 0 1 0 0 0 16-3584
+chrM 5517 1 0 0 0 1 0 0 16-3584
+chrM 5518 1 0 1 0 0 0 0 16-3584
+chrM 5519 1 0 0 0 1 0 0 16-3584
+chrM 5520 1 0 0 1 0 0 0 16-3584
+chrM 5521 1 0 1 0 0 0 0 16-3584
+chrM 5522 1 0 0 1 0 0 0 16-3584
+chrM 5523 1 0 0 0 1 0 0 16-3584
+chrM 5524 1 0 0 0 1 0 0 16-3584
+chrM 5525 1 0 0 0 1 0 0 16-3584
+chrM 5526 1 0 0 0 1 0 0 16-3584
+chrM 5527 1 0 1 0 0 0 0 16-3584
+chrM 5528 1 1 0 0 0 0 0 16-3584
+chrM 5529 1 1 0 0 0 0 0 16-3584
+chrM 5530 1 0 0 0 1 0 0 16-3584
+chrM 5531 1 1 0 0 0 0 0 16-3584
+chrM 5532 1 0 0 0 1 0 0 16-3584
+chrM 5533 1 0 0 0 1 0 0 16-3584
+chrM 5534 1 0 0 0 1 0 0 16-3584
+chrM 5535 1 0 1 0 0 0 0 16-3584
+chrM 5536 1 0 0 0 1 0 0 16-3584
+chrM 5537 1 0 0 0 1 0 0 16-3584
+chrM 5538 1 0 0 0 1 0 0 16-3584
+chrM 5539 1 0 0 0 1 0 0 16-3584
+chrM 5540 1 0 1 0 0 0 0 16-3584
+chrM 5541 1 0 1 0 0 0 0 16-3584
+chrM 5542 1 0 1 0 0 0 0 16-3584
+chrM 5543 1 0 0 0 1 0 0 16-3584
+chrM 5544 1 0 0 1 0 0 0 16-3584
+chrM 5545 1 1 0 0 0 0 0 16-3584
+chrM 5546 1 1 0 0 0 0 0 16-3584
+chrM 5547 1 0 1 0 0 0 0 16-3584
+chrM 5548 1 0 0 1 0 0 0 16-3584
+chrM 5549 1 0 0 1 0 0 0 16-3584
+chrM 5550 1 0 0 1 0 0 0 16-3584
+chrM 5551 1 0 0 0 1 0 0 16-3584
+chrM 5552 1 0 1 0 0 0 0 16-3584
+chrM 5553 1 0 0 0 1 0 0 16-3584
+chrM 5554 1 0 1 0 0 0 0 16-3584
+chrM 5555 1 0 0 1 0 0 0 16-3584
+chrM 5556 1 1 0 0 0 0 0 16-3584
+chrM 5557 1 0 0 0 1 0 0 16-3584
+chrM 5558 1 0 0 1 0 0 0 16-3584
+chrM 9027 2 1 1 0 0 0 0 16-3584
+chrM 9028 2 0 0 0 2 0 0 16-3584
+chrM 9029 2 2 0 0 0 0 0 16-3584
+chrM 9030 2 1 0 0 1 0 0 16-3584
+chrM 9031 2 0 0 2 0 0 0 16-3584
+chrM 9032 4 0 2 0 2 0 0 16-3584
+chrM 9033 4 2 0 2 0 0 0 16-3584
+chrM 9034 4 1 1 1 1 0 0 16-3584
+chrM 9035 4 0 1 2 1 0 0 16-3584
+chrM 9036 4 1 2 0 1 0 0 16-3584
+chrM 9037 4 1 1 1 1 0 0 16-3584
+chrM 9038 4 1 0 2 1 0 0 16-3584
+chrM 9039 4 0 2 2 0 0 0 16-3584
+chrM 9040 4 0 3 0 1 0 0 16-3584
+chrM 9041 4 0 0 1 3 0 0 16-3584
+chrM 9042 4 1 2 0 1 0 0 16-3584
+chrM 9043 4 1 0 3 0 0 0 16-3584
+chrM 9044 4 2 1 1 0 0 0 16-3584
+chrM 9045 4 0 1 2 1 0 0 16-3584
+chrM 9046 4 0 2 1 1 0 0 16-3584
+chrM 9047 4 2 2 0 0 0 0 16-3584
+chrM 9048 4 0 1 2 1 0 0 16-3584
+chrM 9049 4 0 1 0 3 0 0 16-3584
+chrM 9050 4 1 1 2 0 0 0 16-3584
+chrM 9051 4 0 0 0 4 0 0 16-3584
+chrM 9052 4 1 0 2 1 0 0 16-3584
+chrM 9053 4 2 0 1 1 0 0 16-3584
+chrM 9054 4 0 2 0 2 0 0 16-3584
+chrM 9055 4 0 2 2 0 0 0 16-3584
+chrM 9056 4 2 0 1 1 0 0 16-3584
+chrM 9057 4 0 0 1 3 0 0 16-3584
+chrM 9058 4 2 1 0 1 0 0 16-3584
+chrM 9059 4 1 1 0 2 0 0 16-3584
+chrM 9060 4 0 2 0 2 0 0 16-3584
+chrM 9061 4 1 0 2 1 0 0 16-3584
+chrM 9062 4 1 1 1 1 0 0 16-3584
+chrM 9063 4 2 1 0 1 0 0 16-3584
+chrM 9064 4 1 1 2 0 0 0 16-3584
+chrM 9065 4 0 3 1 0 0 0 16-3584
+chrM 9066 4 1 0 1 2 0 0 16-3584
+chrM 9067 4 2 0 1 1 0 0 16-3584
+chrM 9068 4 0 1 1 2 0 0 16-3584
+chrM 9069 4 1 1 0 2 0 0 16-3584
+chrM 9070 4 0 0 4 0 0 0 16-3584
+chrM 9071 4 1 1 2 0 0 0 16-3584
+chrM 9072 4 3 1 0 0 0 0 16-3584
+chrM 9073 4 2 1 1 0 0 0 16-3584
+chrM 9074 4 1 1 1 1 0 0 16-3584
+chrM 9075 2 0 0 2 0 0 0 16-3584
+chrM 9076 2 0 1 1 0 0 0 16-3584
+chrM 9077 2 0 1 0 1 0 0 16-3584
+chrM 9078 2 0 1 1 0 0 0 16-3584
+chrM 9079 2 0 1 0 1 0 0 16-3584
+chrM 9278 2 1 0 1 0 0 0 16-3584
+chrM 9279 2 0 2 0 0 0 0 16-3584
+chrM 9280 2 0 1 0 1 0 0 16-3584
+chrM 9281 2 0 2 0 0 0 0 16-3584
+chrM 9282 2 0 0 2 0 0 0 16-3584
+chrM 9283 2 0 1 1 0 0 0 16-3584
+chrM 9284 2 0 0 1 1 0 0 16-3584
+chrM 9285 2 0 0 0 2 0 0 16-3584
+chrM 9286 2 2 0 0 0 0 0 16-3584
+chrM 9287 2 1 1 0 0 0 0 16-3584
+chrM 9288 2 0 1 1 0 0 0 16-3584
+chrM 9289 2 1 0 0 1 0 0 16-3584
+chrM 9290 2 0 0 0 2 0 0 16-3584
+chrM 9291 2 1 0 0 1 0 0 16-3584
+chrM 9292 2 1 1 0 0 0 0 16-3584
+chrM 9293 2 1 0 1 0 0 0 16-3584
+chrM 9294 2 2 0 0 0 0 0 16-3584
+chrM 9295 2 1 0 1 0 0 0 16-3584
+chrM 9296 2 1 0 1 0 0 0 16-3584
+chrM 9297 2 1 0 1 0 0 0 16-3584
+chrM 9298 2 1 0 0 1 0 0 16-3584
+chrM 9299 2 1 0 1 0 0 0 16-3584
+chrM 9300 2 1 1 0 0 0 0 16-3584
+chrM 9301 2 1 0 0 1 0 0 16-3584
+chrM 9302 2 0 1 0 1 0 0 16-3584
+chrM 9303 2 0 1 0 1 0 0 16-3584
+chrM 9304 2 1 0 0 1 0 0 16-3584
+chrM 9305 2 0 1 0 1 0 0 16-3584
+chrM 9306 2 0 1 0 1 0 0 16-3584
+chrM 9307 2 0 1 1 0 0 0 16-3584
+chrM 9308 2 1 0 0 1 0 0 16-3584
+chrM 9309 2 1 0 1 0 0 0 16-3584
+chrM 9310 2 2 0 0 0 0 0 16-3584
+chrM 9311 2 0 1 1 0 0 0 16-3584
+chrM 9312 2 1 0 0 1 0 0 16-3584
+chrM 9313 2 0 1 1 0 0 0 16-3584
+chrM 9314 2 0 2 0 0 0 0 16-3584
+chrM 9315 2 1 1 0 0 0 0 16-3584
+chrM 9316 2 0 1 1 0 0 0 16-3584
+chrM 9317 2 0 1 0 1 0 0 16-3584
+chrM 9318 2 1 0 1 0 0 0 16-3584
+chrM 9319 2 1 0 1 0 0 0 16-3584
+chrM 9320 2 2 0 0 0 0 0 16-3584
+chrM 9321 2 1 1 0 0 0 0 16-3584
+chrM 9322 4 1 0 0 3 0 0 16-3584
+chrM 9323 4 1 1 1 1 0 0 16-3584
+chrM 9324 4 1 0 1 2 0 0 16-3584
+chrM 9325 4 0 1 3 0 0 0 16-3584
+chrM 9326 4 2 1 1 0 0 0 16-3584
+chrM 9327 4 2 0 2 0 0 0 16-3584
+chrM 9328 4 1 0 1 2 0 0 16-3584
+chrM 9329 4 1 2 1 0 0 0 16-3584
+chrM 9330 4 2 1 0 1 0 0 16-3584
+chrM 9331 4 2 1 1 0 0 0 16-3584
+chrM 9332 4 2 1 0 1 0 0 16-3584
+chrM 9333 4 0 1 1 2 0 0 16-3584
+chrM 9334 4 1 2 0 1 0 0 16-3584
+chrM 9335 4 0 1 0 3 0 0 16-3584
+chrM 9336 4 1 0 1 2 0 0 16-3584
+chrM 9337 4 1 0 1 2 0 0 16-3584
+chrM 9338 4 2 0 0 2 0 0 16-3584
+chrM 9339 4 2 0 1 1 0 0 16-3584
+chrM 9340 4 3 0 1 0 0 0 16-3584
+chrM 9341 4 1 1 1 1 0 0 16-3584
+chrM 9342 4 0 1 0 3 0 0 16-3584
+chrM 9343 4 0 1 1 2 0 0 16-3584
+chrM 9344 4 0 1 2 1 0 0 16-3584
+chrM 9345 4 2 1 0 1 0 0 16-3584
+chrM 9346 4 1 3 0 0 0 0 16-3584
+chrM 9347 4 1 1 0 2 0 0 16-3584
+chrM 9348 4 2 1 1 0 0 0 16-3584
+chrM 9349 4 2 1 1 0 0 0 16-3584
+chrM 9350 4 0 0 2 2 0 0 16-3584
+chrM 9351 4 0 2 0 2 0 0 16-3584
+chrM 9352 4 1 1 2 0 0 0 16-3584
+chrM 9353 4 1 0 2 1 0 0 16-3584
+chrM 9354 4 1 0 2 1 0 0 16-3584
+chrM 9355 4 4 0 0 0 0 0 16-3584
+chrM 9356 4 2 0 1 1 0 0 16-3584
+chrM 9357 4 0 0 1 3 0 0 16-3584
+chrM 9358 4 2 1 0 1 0 0 16-3584
+chrM 9359 4 2 2 0 0 0 0 16-3584
+chrM 9360 4 2 1 0 1 0 0 16-3584
+chrM 9361 4 0 2 2 0 0 0 16-3584
+chrM 9362 4 1 1 0 2 0 0 16-3584
+chrM 9363 4 1 1 0 2 0 0 16-3584
+chrM 9364 4 2 0 1 1 0 0 16-3584
+chrM 9365 4 1 2 0 1 0 0 16-3584
+chrM 9366 4 1 2 1 0 0 0 16-3584
+chrM 9367 4 0 0 1 3 0 0 16-3584
+chrM 9368 4 3 0 1 0 0 0 16-3584
+chrM 9369 4 0 1 1 2 0 0 16-3584
+chrM 9370 4 0 0 3 1 0 0 16-3584
+chrM 9371 4 0 2 1 1 0 0 16-3584
+chrM 9372 4 1 2 1 0 0 0 16-3584
+chrM 9373 4 1 1 1 1 0 0 16-3584
+chrM 9374 4 1 0 1 2 0 0 16-3584
+chrM 9375 4 2 0 0 2 0 0 16-3584
+chrM 9376 4 0 1 3 0 0 0 16-3584
+chrM 9377 4 0 1 0 3 0 0 16-3584
+chrM 9378 4 1 1 0 2 0 0 16-3584
+chrM 9379 4 0 1 2 1 0 0 16-3584
+chrM 9380 4 2 1 0 1 0 0 16-3584
+chrM 9381 4 2 2 0 0 0 0 16-3584
+chrM 9382 4 0 1 1 2 0 0 16-3584
+chrM 9383 4 0 0 3 1 0 0 16-3584
+chrM 9384 4 0 1 2 1 0 0 16-3584
+chrM 9385 4 2 0 0 2 0 0 16-3584
+chrM 9386 4 2 0 2 0 0 0 16-3584
+chrM 9387 4 0 1 2 1 0 0 16-3584
+chrM 9388 4 1 0 1 2 0 0 16-3584
+chrM 9389 4 1 1 2 0 0 0 16-3584
+chrM 9390 4 1 1 1 1 0 0 16-3584
+chrM 9391 4 2 0 1 1 0 0 16-3584
+chrM 9392 4 0 1 1 2 0 0 16-3584
+chrM 9393 4 3 0 0 1 0 0 16-3584
+chrM 9394 4 1 1 1 1 0 0 16-3584
+chrM 9395 4 0 0 3 1 0 0 16-3584
+chrM 9396 4 2 1 0 1 0 0 16-3584
+chrM 9397 4 0 0 2 2 0 0 16-3584
+chrM 9398 4 2 1 1 0 0 0 16-3584
+chrM 9399 4 0 2 0 2 0 0 16-3584
+chrM 9400 4 1 2 0 1 0 0 16-3584
+chrM 9401 4 0 1 2 1 0 0 16-3584
+chrM 9402 4 1 2 0 1 0 0 16-3584
+chrM 9403 4 1 1 0 2 0 0 16-3584
+chrM 9404 4 2 2 0 0 0 0 16-3584
+chrM 9405 4 1 1 0 2 0 0 16-3584
+chrM 9406 4 0 1 3 0 0 0 16-3584
+chrM 9407 4 0 1 1 2 0 0 16-3584
+chrM 9408 4 1 2 0 1 0 0 16-3584
+chrM 9409 4 1 1 1 1 0 0 16-3584
+chrM 9410 4 1 1 1 1 0 0 16-3584
+chrM 9411 4 1 1 2 0 0 0 16-3584
+chrM 9412 4 1 0 1 2 0 0 16-3584
+chrM 9413 4 3 0 0 1 0 0 16-3584
+chrM 9414 4 1 2 0 1 0 0 16-3584
+chrM 9415 4 1 1 1 1 0 0 16-3584
+chrM 9416 4 1 0 2 1 0 0 16-3584
+chrM 9417 4 1 0 1 2 0 0 16-3584
+chrM 9418 4 2 0 1 1 0 0 16-3584
+chrM 9419 4 2 1 1 0 0 0 16-3584
+chrM 9420 4 1 2 0 1 0 0 16-3584
+chrM 9421 4 0 2 2 0 0 0 16-3584
+chrM 9422 4 0 0 4 0 0 0 16-3584
+chrM 9423 4 0 1 1 2 0 0 16-3584
+chrM 9424 2 1 0 0 1 0 0 16-3584
+chrM 9425 2 1 1 0 0 0 0 16-3584
+chrM 9426 2 1 1 0 0 0 0 16-3584
+chrM 9427 2 2 0 0 0 0 0 16-3584
+chrM 9428 2 0 1 1 0 0 0 16-3584
+chrM 9429 2 0 0 1 1 0 0 16-3584
+chrM 9430 2 2 0 0 0 0 0 16-3584
+chrM 9431 2 2 0 0 0 0 0 16-3584
+chrM 9432 2 0 0 1 1 0 0 16-3584
+chrM 9433 2 0 1 1 0 0 0 16-3584
+chrM 9434 2 0 0 0 2 0 0 16-3584
+chrM 9435 2 1 0 0 1 0 0 16-3584
+chrM 9436 2 0 1 1 0 0 0 16-3584
+chrM 9437 2 0 0 1 1 0 0 16-3584
+chrM 9438 2 0 0 0 2 0 0 16-3584
+chrM 9439 2 0 1 0 1 0 0 16-3584
+chrM 9440 2 0 0 1 1 0 0 16-3584
+chrM 9441 2 0 0 1 1 0 0 16-3584
+chrM 9442 2 0 1 0 1 0 0 16-3584
+chrM 9443 2 0 1 1 0 0 0 16-3584
+chrM 9444 2 0 0 1 1 0 0 16-3584
+chrM 9445 2 1 0 1 0 0 0 16-3584
+chrM 9446 2 1 0 1 0 0 0 16-3584
+chrM 9447 2 0 1 1 0 0 0 16-3584
+chrM 9448 2 0 0 0 2 0 0 16-3584
+chrM 9449 2 1 0 0 1 0 0 16-3584
+chrM 9450 2 1 0 1 0 0 0 16-3584
+chrM 9451 2 1 0 0 1 0 0 16-3584
+chrM 9452 2 0 1 1 0 0 0 16-3584
+chrM 9453 2 1 1 0 0 0 0 16-3584
+chrM 9454 2 1 1 0 0 0 0 16-3584
+chrM 9455 2 1 1 0 0 0 0 16-3584
+chrM 9456 2 2 0 0 0 0 0 16-3584
+chrM 9457 2 1 0 0 1 0 0 16-3584
+chrM 9458 2 2 0 0 0 0 0 16-3584
+chrM 9459 2 0 0 1 1 0 0 16-3584
+chrM 9460 2 0 1 0 1 0 0 16-3584
+chrM 9461 2 0 1 1 0 0 0 16-3584
+chrM 9462 2 0 1 1 0 0 0 16-3584
+chrM 9463 2 2 0 0 0 0 0 16-3584
+chrM 9464 2 1 1 0 0 0 0 16-3584
+chrM 9465 2 1 1 0 0 0 0 16-3584
+chrM 10912 1 0 0 0 1 0 0 16-3584
+chrM 10913 1 1 0 0 0 0 0 16-3584
+chrM 10914 1 1 0 0 0 0 0 16-3584
+chrM 10915 1 0 0 1 0 0 0 16-3584
+chrM 10916 1 0 0 0 1 0 0 16-3584
+chrM 10917 2 0 0 2 0 0 0 16-3584
+chrM 10918 2 0 1 0 1 0 0 16-3584
+chrM 10919 2 0 2 0 0 0 0 16-3584
+chrM 10920 2 0 1 1 0 0 0 16-3584
+chrM 10921 2 0 2 0 0 0 0 16-3584
+chrM 10922 2 1 0 1 0 0 0 16-3584
+chrM 10923 2 1 0 1 0 0 0 16-3584
+chrM 10924 2 1 0 1 0 0 0 16-3584
+chrM 10925 2 0 0 2 0 0 0 16-3584
+chrM 10926 2 0 2 0 0 0 0 16-3584
+chrM 10927 2 0 0 2 0 0 0 16-3584
+chrM 10928 2 1 0 1 0 0 0 16-3584
+chrM 10929 2 1 1 0 0 0 0 16-3584
+chrM 10930 2 1 0 0 1 0 0 16-3584
+chrM 10931 2 1 0 1 0 0 0 16-3584
+chrM 10932 2 1 1 0 0 0 0 16-3584
+chrM 10933 2 1 0 1 0 0 0 16-3584
+chrM 10934 2 0 1 1 0 0 0 16-3584
+chrM 10935 2 1 1 0 0 0 0 16-3584
+chrM 10936 2 1 0 0 1 0 0 16-3584
+chrM 10937 2 0 2 0 0 0 0 16-3584
+chrM 10938 2 1 0 0 1 0 0 16-3584
+chrM 10939 2 0 0 1 1 0 0 16-3584
+chrM 10940 2 0 0 1 1 0 0 16-3584
+chrM 10941 2 0 1 1 0 0 0 16-3584
+chrM 10942 2 0 1 0 1 0 0 16-3584
+chrM 10943 2 0 1 0 1 0 0 16-3584
+chrM 10944 2 2 0 0 0 0 0 16-3584
+chrM 10945 2 1 0 1 0 0 0 16-3584
+chrM 10946 2 1 1 0 0 0 0 16-3584
+chrM 10947 2 0 0 1 1 0 0 16-3584
+chrM 10948 2 0 1 1 0 0 0 16-3584
+chrM 10949 2 1 1 0 0 0 0 16-3584
+chrM 10950 2 1 0 0 1 0 0 16-3584
+chrM 10951 2 0 1 0 1 0 0 16-3584
+chrM 10952 2 0 0 0 2 0 0 16-3584
+chrM 10953 2 0 0 1 1 0 0 16-3584
+chrM 10954 2 0 0 2 0 0 0 16-3584
+chrM 10955 2 2 0 0 0 0 0 16-3584
+chrM 10956 2 0 1 0 1 0 0 16-3584
+chrM 10957 2 0 0 2 0 0 0 16-3584
+chrM 10958 2 0 1 0 1 0 0 16-3584
+chrM 10959 2 0 1 0 1 0 0 16-3584
+chrM 10960 2 1 0 0 1 0 0 16-3584
+chrM 10961 2 1 1 0 0 0 0 16-3584
+chrM 10962 2 1 0 0 1 0 0 16-3584
+chrM 10963 2 1 0 0 1 0 0 16-3584
+chrM 10964 2 0 0 0 2 0 0 16-3584
+chrM 10965 2 1 1 0 0 0 0 16-3584
+chrM 10966 2 0 1 1 0 0 0 16-3584
+chrM 10967 2 0 1 0 1 0 0 16-3584
+chrM 10968 2 0 1 0 1 0 0 16-3584
+chrM 10969 2 0 1 1 0 0 0 16-3584
+chrM 10970 2 0 0 1 1 0 0 16-3584
+chrM 10971 2 1 1 0 0 0 0 16-3584
+chrM 10972 2 0 0 1 1 0 0 16-3584
+chrM 10973 2 2 0 0 0 0 0 16-3584
+chrM 10974 2 2 0 0 0 0 0 16-3584
+chrM 10975 2 1 0 1 0 0 0 16-3584
+chrM 10976 2 0 2 0 0 0 0 16-3584
+chrM 10977 2 1 0 1 0 0 0 16-3584
+chrM 10978 2 1 0 0 1 0 0 16-3584
+chrM 10979 2 0 0 0 2 0 0 16-3584
+chrM 10980 2 2 0 0 0 0 0 16-3584
+chrM 10981 2 0 2 0 0 0 0 16-3584
+chrM 10982 2 1 1 0 0 0 0 16-3584
+chrM 10983 2 1 1 0 0 0 0 16-3584
+chrM 10984 1 0 0 0 1 0 0 16-3584
+chrM 10985 1 1 0 0 0 0 0 16-3584
+chrM 10986 1 0 1 0 0 0 0 16-3584
+chrM 10987 1 0 1 0 0 0 0 16-3584
+chrM 10988 1 1 0 0 0 0 0 16-3584
+chrM 11991 1 0 1 0 0 0 0 16-3584
+chrM 11992 1 1 0 0 0 0 0 16-3584
+chrM 11993 1 1 0 0 0 0 0 16-3584
+chrM 11994 1 0 1 0 0 0 0 16-3584
+chrM 11995 1 1 0 0 0 0 0 16-3584
+chrM 11996 2 0 1 0 1 0 0 16-3584
+chrM 11997 2 1 1 0 0 0 0 16-3584
+chrM 11998 2 1 0 0 1 0 0 16-3584
+chrM 11999 2 0 0 0 2 0 0 16-3584
+chrM 12000 2 0 0 1 1 0 0 16-3584
+chrM 12001 2 1 1 0 0 0 0 16-3584
+chrM 12002 2 0 1 1 0 0 0 16-3584
+chrM 12003 2 1 0 1 0 0 0 16-3584
+chrM 12004 2 1 0 1 0 0 0 16-3584
+chrM 12005 2 0 1 1 0 0 0 16-3584
+chrM 12006 2 0 1 1 0 0 0 16-3584
+chrM 12007 2 1 0 0 1 0 0 16-3584
+chrM 12008 2 0 2 0 0 0 0 16-3584
+chrM 12009 2 1 1 0 0 0 0 16-3584
+chrM 12010 2 0 2 0 0 0 0 16-3584
+chrM 12011 2 0 0 1 1 0 0 16-3584
+chrM 12012 2 0 1 0 1 0 0 16-3584
+chrM 12013 2 0 0 2 0 0 0 16-3584
+chrM 12014 2 1 0 1 0 0 0 16-3584
+chrM 12015 2 0 1 1 0 0 0 16-3584
+chrM 12016 2 1 0 0 1 0 0 16-3584
+chrM 12017 2 0 1 0 1 0 0 16-3584
+chrM 12018 2 1 1 0 0 0 0 16-3584
+chrM 12019 2 0 1 0 1 0 0 16-3584
+chrM 12020 2 1 0 0 1 0 0 16-3584
+chrM 12021 2 0 0 0 2 0 0 16-3584
+chrM 12022 2 1 1 0 0 0 0 16-3584
+chrM 12023 2 0 1 1 0 0 0 16-3584
+chrM 12024 2 1 1 0 0 0 0 16-3584
+chrM 12025 2 2 0 0 0 0 0 16-3584
+chrM 12026 2 1 0 0 1 0 0 16-3584
+chrM 12027 2 1 0 1 0 0 0 16-3584
+chrM 12028 2 0 0 1 1 0 0 16-3584
+chrM 12029 2 0 0 0 2 0 0 16-3584
+chrM 12030 2 0 1 1 0 0 0 16-3584
+chrM 12031 2 0 1 1 0 0 0 16-3584
+chrM 12032 2 0 1 1 0 0 0 16-3584
+chrM 12033 2 1 0 0 1 0 0 16-3584
+chrM 12034 2 1 1 0 0 0 0 16-3584
+chrM 12035 2 2 0 0 0 0 0 16-3584
+chrM 12036 2 0 0 2 0 0 0 16-3584
+chrM 12037 2 0 0 1 1 0 0 16-3584
+chrM 12038 2 0 1 0 1 0 0 16-3584
+chrM 12039 2 1 0 0 1 0 0 16-3584
+chrM 12040 2 0 0 1 1 0 0 16-3584
+chrM 12041 2 0 0 0 2 0 0 16-3584
+chrM 12042 2 1 1 0 0 0 0 16-3584
+chrM 12043 2 1 0 0 1 0 0 16-3584
+chrM 12044 2 1 1 0 0 0 0 16-3584
+chrM 12045 2 0 0 1 1 0 0 16-3584
+chrM 12046 2 0 2 0 0 0 0 16-3584
+chrM 12047 2 0 0 2 0 0 0 16-3584
+chrM 12048 1 0 0 1 0 0 0 16-3584
+chrM 12049 1 1 0 0 0 0 0 16-3584
+chrM 12050 1 0 0 1 0 0 0 16-3584
+chrM 12051 1 1 0 0 0 0 0 16-3584
+chrM 12052 1 0 0 0 1 0 0 16-3584
+chrM 13365 1 1 0 0 0 0 0 16-3584
+chrM 13366 1 0 0 0 1 0 0 16-3584
+chrM 13367 1 0 1 0 0 0 0 16-3584
+chrM 13368 1 1 0 0 0 0 0 16-3584
+chrM 13369 1 0 0 0 1 0 0 16-3584
+chrM 13370 1 1 0 0 0 0 0 16-3584
+chrM 13371 1 0 0 1 0 0 0 16-3584
+chrM 13372 1 0 0 0 1 0 0 16-3584
+chrM 13373 1 0 0 0 1 0 0 16-3584
+chrM 13374 1 0 1 0 0 0 0 16-3584
+chrM 13375 1 1 0 0 0 0 0 16-3584
+chrM 13376 1 0 0 1 0 0 0 16-3584
+chrM 13377 1 0 0 0 1 0 0 16-3584
+chrM 13378 1 1 0 0 0 0 0 16-3584
+chrM 13379 1 0 1 0 0 0 0 16-3584
+chrM 13380 1 0 0 1 0 0 0 16-3584
+chrM 13381 1 1 0 0 0 0 0 16-3584
+chrM 13382 1 1 0 0 0 0 0 16-3584
+chrM 13383 1 0 0 0 1 0 0 16-3584
+chrM 13384 1 1 0 0 0 0 0 16-3584
+chrM 13385 1 1 0 0 0 0 0 16-3584
+chrM 13386 1 0 0 1 0 0 0 16-3584
+chrM 13387 1 1 0 0 0 0 0 16-3584
+chrM 13388 1 0 1 0 0 0 0 16-3584
+chrM 13389 1 1 0 0 0 0 0 16-3584
+chrM 13390 1 1 0 0 0 0 0 16-3584
+chrM 13391 1 0 1 0 0 0 0 16-3584
+chrM 13392 1 1 0 0 0 0 0 16-3584
+chrM 13393 1 0 1 0 0 0 0 16-3584
+chrM 13394 1 0 0 0 1 0 0 16-3584
+chrM 13395 1 1 0 0 0 0 0 16-3584
+chrM 13396 1 1 0 0 0 0 0 16-3584
+chrM 13397 1 0 0 0 1 0 0 16-3584
+chrM 13398 1 1 0 0 0 0 0 16-3584
+chrM 13399 1 0 0 0 1 0 0 16-3584
+chrM 13400 1 0 1 0 0 0 0 16-3584
+chrM 13401 1 1 0 0 0 0 0 16-3584
+chrM 13402 1 0 0 1 0 0 0 16-3584
+chrM 13403 1 0 0 1 0 0 0 16-3584
+chrM 13404 1 1 0 0 0 0 0 16-3584
+chrM 13405 1 0 0 1 0 0 0 16-3584
+chrM 13406 2 1 0 1 0 0 0 16-3584
+chrM 13407 2 1 0 0 1 0 0 16-3584
+chrM 13408 2 1 0 0 1 0 0 16-3584
+chrM 13409 2 1 0 1 0 0 0 16-3584
+chrM 13410 2 0 1 0 1 0 0 16-3584
+chrM 13411 2 0 1 1 0 0 0 16-3584
+chrM 13412 2 0 0 2 0 0 0 16-3584
+chrM 13413 2 0 1 0 1 0 0 16-3584
+chrM 13414 2 1 0 0 1 0 0 16-3584
+chrM 13415 2 1 0 0 1 0 0 16-3584
+chrM 13416 2 0 0 1 1 0 0 16-3584
+chrM 13417 2 1 0 0 1 0 0 16-3584
+chrM 13418 2 0 0 1 1 0 0 16-3584
+chrM 13419 2 0 1 0 1 0 0 16-3584
+chrM 13420 2 0 1 1 0 0 0 16-3584
+chrM 13421 2 0 1 0 1 0 0 16-3584
+chrM 13422 2 0 0 1 1 0 0 16-3584
+chrM 13423 2 2 0 0 0 0 0 16-3584
+chrM 13424 2 0 1 0 1 0 0 16-3584
+chrM 13425 2 0 0 1 1 0 0 16-3584
+chrM 13426 2 1 0 0 1 0 0 16-3584
+chrM 13427 2 1 0 1 0 0 0 16-3584
+chrM 13428 2 0 1 1 0 0 0 16-3584
+chrM 13429 2 0 0 2 0 0 0 16-3584
+chrM 13430 2 0 0 1 1 0 0 16-3584
+chrM 13431 2 0 1 1 0 0 0 16-3584
+chrM 13432 2 0 1 1 0 0 0 16-3584
+chrM 13433 2 0 1 1 0 0 0 16-3584
+chrM 13434 2 1 1 0 0 0 0 16-3584
+chrM 13435 2 1 0 1 0 0 0 16-3584
+chrM 13436 2 1 0 1 0 0 0 16-3584
+chrM 13437 2 0 1 0 1 0 0 16-3584
+chrM 13438 2 0 1 0 1 0 0 16-3584
+chrM 13439 2 1 1 0 0 0 0 16-3584
+chrM 13440 2 1 0 1 0 0 0 16-3584
+chrM 13441 2 0 1 1 0 0 0 16-3584
+chrM 13442 2 1 0 0 1 0 0 16-3584
+chrM 13443 2 0 0 0 2 0 0 16-3584
+chrM 13444 2 0 1 0 1 0 0 16-3584
+chrM 13445 2 1 0 0 1 0 0 16-3584
+chrM 13446 2 0 0 0 2 0 0 16-3584
+chrM 13447 2 1 0 0 1 0 0 16-3584
+chrM 13448 2 0 0 0 2 0 0 16-3584
+chrM 13449 2 0 2 0 0 0 0 16-3584
+chrM 13450 2 2 0 0 0 0 0 16-3584
+chrM 13451 2 1 0 1 0 0 0 16-3584
+chrM 13452 2 0 1 0 1 0 0 16-3584
+chrM 13453 2 1 0 0 1 0 0 16-3584
+chrM 13454 2 2 0 0 0 0 0 16-3584
+chrM 13455 2 0 1 0 1 0 0 16-3584
+chrM 13456 2 0 2 0 0 0 0 16-3584
+chrM 13457 2 0 1 0 1 0 0 16-3584
+chrM 13458 2 1 1 0 0 0 0 16-3584
+chrM 13459 2 1 0 0 1 0 0 16-3584
+chrM 13460 2 0 0 0 2 0 0 16-3584
+chrM 13461 2 1 0 0 1 0 0 16-3584
+chrM 13462 2 1 1 0 0 0 0 16-3584
+chrM 13463 2 1 0 1 0 0 0 16-3584
+chrM 13464 2 0 1 1 0 0 0 16-3584
+chrM 13465 2 1 0 0 1 0 0 16-3584
+chrM 13466 2 0 0 2 0 0 0 16-3584
+chrM 13467 2 0 1 1 0 0 0 16-3584
+chrM 13468 2 0 2 0 0 0 0 16-3584
+chrM 13469 2 1 1 0 0 0 0 16-3584
+chrM 13470 2 0 0 0 2 0 0 16-3584
+chrM 13471 2 1 1 0 0 0 0 16-3584
+chrM 13472 2 0 1 0 1 0 0 16-3584
+chrM 13473 2 1 0 1 0 0 0 16-3584
+chrM 13474 2 1 0 0 1 0 0 16-3584
+chrM 13475 2 0 0 0 2 0 0 16-3584
+chrM 13476 2 0 1 1 0 0 0 16-3584
+chrM 13477 2 1 1 0 0 0 0 16-3584
+chrM 13478 2 0 1 0 1 0 0 16-3584
+chrM 13479 2 0 1 1 0 0 0 16-3584
+chrM 13480 2 0 1 1 0 0 0 16-3584
+chrM 13481 2 2 0 0 0 0 0 16-3584
+chrM 13482 2 1 0 1 0 0 0 16-3584
+chrM 13483 2 1 1 0 0 0 0 16-3584
+chrM 13484 2 0 1 0 1 0 0 16-3584
+chrM 13485 2 1 0 0 1 0 0 16-3584
+chrM 13486 2 0 0 0 2 0 0 16-3584
+chrM 13487 2 2 0 0 0 0 0 16-3584
+chrM 13488 2 1 1 0 0 0 0 16-3584
+chrM 13489 2 0 1 1 0 0 0 16-3584
+chrM 13490 2 2 0 0 0 0 0 16-3584
+chrM 13491 2 0 1 0 1 0 0 16-3584
+chrM 13492 2 0 2 0 0 0 0 16-3584
+chrM 13493 2 1 0 0 1 0 0 16-3584
+chrM 13494 2 0 0 0 2 0 0 16-3584
+chrM 13495 2 1 1 0 0 0 0 16-3584
+chrM 13496 2 1 1 0 0 0 0 16-3584
+chrM 13497 2 1 0 1 0 0 0 16-3584
+chrM 13498 2 1 1 0 0 0 0 16-3584
+chrM 13499 2 0 2 0 0 0 0 16-3584
+chrM 13500 2 0 0 0 2 0 0 16-3584
+chrM 13501 2 1 0 1 0 0 0 16-3584
+chrM 13502 2 1 1 0 0 0 0 16-3584
+chrM 13503 2 0 1 1 0 0 0 16-3584
+chrM 13504 2 0 1 1 0 0 0 16-3584
+chrM 13505 2 2 0 0 0 0 0 16-3584
+chrM 13506 2 1 0 1 0 0 0 16-3584
+chrM 13507 2 0 1 0 1 0 0 16-3584
+chrM 13508 2 1 0 1 0 0 0 16-3584
+chrM 13509 2 0 0 0 2 0 0 16-3584
+chrM 13510 1 0 0 1 0 0 0 16-3584
+chrM 13511 1 0 0 0 1 0 0 16-3584
+chrM 13512 1 0 0 0 1 0 0 16-3584
+chrM 13513 1 0 0 0 1 0 0 16-3584
+chrM 13514 1 1 0 0 0 0 0 16-3584
+chrM 13515 1 0 0 0 1 0 0 16-3584
+chrM 13516 1 1 0 0 0 0 0 16-3584
+chrM 13517 1 0 0 1 0 0 0 16-3584
+chrM 13518 1 0 0 1 0 0 0 16-3584
+chrM 13519 1 1 0 0 0 0 0 16-3584
+chrM 13520 1 0 0 1 0 0 0 16-3584
+chrM 13521 1 0 0 1 0 0 0 16-3584
+chrM 13522 1 0 0 1 0 0 0 16-3584
+chrM 13523 1 0 0 1 0 0 0 16-3584
+chrM 13524 1 0 0 1 0 0 0 16-3584
+chrM 13525 1 0 0 1 0 0 0 16-3584
+chrM 13526 1 0 0 1 0 0 0 16-3584
+chrM 13527 1 0 1 0 0 0 0 16-3584
+chrM 13528 1 0 0 1 0 0 0 16-3584
+chrM 13529 1 0 0 1 0 0 0 16-3584
+chrM 13530 1 0 1 0 0 0 0 16-3584
+chrM 13531 1 1 0 0 0 0 0 16-3584
+chrM 13532 1 1 0 0 0 0 0 16-3584
+chrM 13533 1 1 0 0 0 0 0 16-3584
+chrM 13534 1 0 0 1 0 0 0 16-3584
+chrM 13535 1 1 0 0 0 0 0 16-3584
+chrM 13536 1 0 0 0 1 0 0 16-3584
+chrM 13537 1 0 0 1 0 0 0 16-3584
+chrM 13538 1 0 0 1 0 0 0 16-3584
+chrM 13539 1 0 1 0 0 0 0 16-3584
+chrM 13540 1 0 0 0 1 0 0 16-3584
+chrM 13541 1 0 0 1 0 0 0 16-3584
+chrM 13542 1 0 0 1 0 0 0 16-3584
+chrM 13543 1 1 0 0 0 0 0 16-3584
+chrM 13544 1 0 0 1 0 0 0 16-3584
+chrM 13545 1 0 0 0 1 0 0 16-3584
+chrM 13546 1 0 0 1 0 0 0 16-3584
+chrM 13547 1 0 1 0 0 0 0 16-3584
+chrM 13548 1 1 0 0 0 0 0 16-3584
+chrM 13549 1 0 0 0 1 0 0 16-3584
+chrM 13550 1 0 0 0 1 0 0 16-3584
+chrM 13551 1 1 0 0 0 0 0 16-3584
+chrM 14794 1 0 0 1 0 0 0 16-3584
+chrM 14795 1 0 0 1 0 0 0 16-3584
+chrM 14796 1 0 0 0 1 0 0 16-3584
+chrM 14797 1 1 0 0 0 0 0 16-3584
+chrM 14798 1 1 0 0 0 0 0 16-3584
+chrM 14799 1 1 0 0 0 0 0 16-3584
+chrM 14800 1 0 1 0 0 0 0 16-3584
+chrM 14801 1 0 1 0 0 0 0 16-3584
+chrM 14802 1 0 0 1 0 0 0 16-3584
+chrM 14803 1 0 0 0 1 0 0 16-3584
+chrM 14804 1 0 0 0 1 0 0 16-3584
+chrM 14805 1 0 1 0 0 0 0 16-3584
+chrM 14806 1 0 1 0 0 0 0 16-3584
+chrM 14807 1 0 1 0 0 0 0 16-3584
+chrM 14808 1 0 0 0 1 0 0 16-3584
+chrM 14809 1 0 0 0 1 0 0 16-3584
+chrM 14810 1 0 0 1 0 0 0 16-3584
+chrM 14811 1 0 0 1 0 0 0 16-3584
+chrM 14812 1 0 1 0 0 0 0 16-3584
+chrM 14813 1 0 0 0 1 0 0 16-3584
+chrM 14814 1 0 1 0 0 0 0 16-3584
+chrM 14815 1 0 0 1 0 0 0 16-3584
+chrM 14816 1 0 1 0 0 0 0 16-3584
+chrM 14817 1 0 0 1 0 0 0 16-3584
+chrM 14818 1 1 0 0 0 0 0 16-3584
+chrM 14819 1 0 0 1 0 0 0 16-3584
+chrM 14820 2 0 1 0 1 0 0 16-3584
+chrM 14821 2 0 1 0 1 0 0 16-3584
+chrM 14822 2 0 1 0 1 0 0 16-3584
+chrM 14823 2 0 1 1 0 0 0 16-3584
+chrM 14824 2 1 1 0 0 0 0 16-3584
+chrM 14825 2 0 0 1 1 0 0 16-3584
+chrM 14826 2 0 1 1 0 0 0 16-3584
+chrM 14827 2 1 0 1 0 0 0 16-3584
+chrM 14828 2 0 1 0 1 0 0 16-3584
+chrM 14829 2 1 1 0 0 0 0 16-3584
+chrM 14830 2 0 0 2 0 0 0 16-3584
+chrM 14831 2 0 0 1 1 0 0 16-3584
+chrM 14832 2 0 1 1 0 0 0 16-3584
+chrM 14833 2 0 2 0 0 0 0 16-3584
+chrM 14834 2 1 0 1 0 0 0 16-3584
+chrM 14835 2 1 0 1 0 0 0 16-3584
+chrM 14836 2 1 1 0 0 0 0 16-3584
+chrM 14837 2 0 1 1 0 0 0 16-3584
+chrM 14838 2 1 0 1 0 0 0 16-3584
+chrM 14839 2 0 1 1 0 0 0 16-3584
+chrM 14840 2 0 2 0 0 0 0 16-3584
+chrM 14841 2 0 0 2 0 0 0 16-3584
+chrM 14842 2 0 1 0 1 0 0 16-3584
+chrM 14843 2 0 2 0 0 0 0 16-3584
+chrM 14844 2 0 1 0 1 0 0 16-3584
+chrM 14845 2 1 1 0 0 0 0 16-3584
+chrM 14846 2 1 1 0 0 0 0 16-3584
+chrM 14847 2 2 0 0 0 0 0 16-3584
+chrM 14848 2 1 1 0 0 0 0 16-3584
+chrM 14849 2 0 0 2 0 0 0 16-3584
+chrM 14850 2 0 0 2 0 0 0 16-3584
+chrM 14851 2 1 1 0 0 0 0 16-3584
+chrM 14852 2 0 1 0 1 0 0 16-3584
+chrM 14853 2 0 0 0 2 0 0 16-3584
+chrM 14854 2 0 2 0 0 0 0 16-3584
+chrM 14855 2 2 0 0 0 0 0 16-3584
+chrM 14856 2 1 0 1 0 0 0 16-3584
+chrM 14857 2 0 1 0 1 0 0 16-3584
+chrM 14858 2 0 0 1 1 0 0 16-3584
+chrM 14859 2 0 1 1 0 0 0 16-3584
+chrM 14860 2 0 1 1 0 0 0 16-3584
+chrM 14861 2 0 1 1 0 0 0 16-3584
+chrM 14862 2 1 1 0 0 0 0 16-3584
+chrM 14863 2 0 0 2 0 0 0 16-3584
+chrM 14864 2 2 0 0 0 0 0 16-3584
+chrM 14865 2 1 1 0 0 0 0 16-3584
+chrM 14866 2 0 1 1 0 0 0 16-3584
+chrM 14867 2 0 2 0 0 0 0 16-3584
+chrM 14868 2 0 0 0 2 0 0 16-3584
+chrM 14869 2 1 1 0 0 0 0 16-3584
+chrM 14870 2 1 0 1 0 0 0 16-3584
+chrM 14871 2 0 2 0 0 0 0 16-3584
+chrM 14872 2 1 0 0 1 0 0 16-3584
+chrM 14873 2 1 0 1 0 0 0 16-3584
+chrM 14874 2 0 0 1 1 0 0 16-3584
+chrM 14875 2 1 0 0 1 0 0 16-3584
+chrM 14876 2 0 2 0 0 0 0 16-3584
+chrM 14877 2 0 2 0 0 0 0 16-3584
+chrM 14878 2 0 0 2 0 0 0 16-3584
+chrM 14879 2 0 1 1 0 0 0 16-3584
+chrM 14880 2 0 0 2 0 0 0 16-3584
+chrM 14881 2 0 0 0 2 0 0 16-3584
+chrM 14882 2 0 0 2 0 0 0 16-3584
+chrM 14883 2 1 0 0 1 0 0 16-3584
+chrM 14884 2 0 1 0 1 0 0 16-3584
+chrM 14885 2 0 1 1 0 0 0 16-3584
+chrM 14886 2 0 0 1 1 0 0 16-3584
+chrM 14887 2 0 1 1 0 0 0 16-3584
+chrM 14888 2 0 0 1 1 0 0 16-3584
+chrM 14889 2 0 1 0 1 0 0 16-3584
+chrM 14890 2 1 0 0 1 0 0 16-3584
+chrM 14891 2 0 1 1 0 0 0 16-3584
+chrM 14892 2 0 1 0 1 0 0 16-3584
+chrM 14893 2 1 0 1 0 0 0 16-3584
+chrM 14894 2 1 0 0 1 0 0 16-3584
+chrM 14895 2 2 0 0 0 0 0 16-3584
+chrM 14896 2 0 2 0 0 0 0 16-3584
+chrM 14897 2 0 1 1 0 0 0 16-3584
+chrM 14898 2 0 1 0 1 0 0 16-3584
+chrM 14899 2 0 0 0 2 0 0 16-3584
+chrM 14900 2 1 0 0 1 0 0 16-3584
+chrM 14901 2 1 0 0 1 0 0 16-3584
+chrM 14902 2 0 0 2 0 0 0 16-3584
+chrM 14903 2 1 0 0 1 0 0 16-3584
+chrM 14904 2 1 0 0 1 0 0 16-3584
+chrM 14905 2 1 1 0 0 0 0 16-3584
+chrM 14906 2 0 1 0 1 0 0 16-3584
+chrM 14907 2 0 0 2 0 0 0 16-3584
+chrM 14908 2 0 0 1 1 0 0 16-3584
+chrM 14909 2 0 0 1 1 0 0 16-3584
+chrM 14910 2 0 1 0 1 0 0 16-3584
+chrM 14911 2 1 0 0 1 0 0 16-3584
+chrM 14912 2 1 0 0 1 0 0 16-3584
+chrM 14913 2 2 0 0 0 0 0 16-3584
+chrM 14914 2 1 0 0 1 0 0 16-3584
+chrM 14915 2 1 0 0 1 0 0 16-3584
+chrM 14916 2 1 1 0 0 0 0 16-3584
+chrM 14917 2 0 1 1 0 0 0 16-3584
+chrM 14918 2 1 0 0 1 0 0 16-3584
+chrM 14919 2 1 0 1 0 0 0 16-3584
+chrM 14920 2 0 1 1 0 0 0 16-3584
+chrM 14921 2 1 0 0 1 0 0 16-3584
+chrM 14922 2 0 1 0 1 0 0 16-3584
+chrM 14923 2 0 1 1 0 0 0 16-3584
+chrM 14924 2 0 0 2 0 0 0 16-3584
+chrM 14925 2 1 0 0 1 0 0 16-3584
+chrM 14926 2 0 1 1 0 0 0 16-3584
+chrM 14927 2 0 1 0 1 0 0 16-3584
+chrM 14928 2 0 1 0 1 0 0 16-3584
+chrM 14929 2 0 1 0 1 0 0 16-3584
+chrM 14930 2 1 1 0 0 0 0 16-3584
+chrM 14931 2 1 0 0 1 0 0 16-3584
+chrM 14932 2 0 1 0 1 0 0 16-3584
+chrM 14933 2 0 0 0 2 0 0 16-3584
+chrM 14934 2 1 1 0 0 0 0 16-3584
+chrM 14935 2 0 1 1 0 0 0 16-3584
+chrM 14936 2 1 0 1 0 0 0 16-3584
+chrM 14937 2 1 0 1 0 0 0 16-3584
+chrM 14938 2 1 0 0 1 0 0 16-3584
+chrM 14939 2 1 1 0 0 0 0 16-3584
+chrM 14940 1 0 0 0 1 0 0 16-3584
+chrM 14941 1 0 1 0 0 0 0 16-3584
+chrM 14942 1 0 0 0 1 0 0 16-3584
+chrM 14943 1 0 0 1 0 0 0 16-3584
+chrM 14944 1 0 0 1 0 0 0 16-3584
+chrM 14945 1 0 1 0 0 0 0 16-3584
+chrM 14946 1 0 0 1 0 0 0 16-3584
+chrM 14947 1 0 0 1 0 0 0 16-3584
+chrM 14948 1 1 0 0 0 0 0 16-3584
+chrM 14949 1 1 0 0 0 0 0 16-3584
+chrM 14950 1 0 1 0 0 0 0 16-3584
+chrM 14951 1 1 0 0 0 0 0 16-3584
+chrM 14952 1 0 0 0 1 0 0 16-3584
+chrM 14953 1 0 0 1 0 0 0 16-3584
+chrM 14954 1 0 0 1 0 0 0 16-3584
+chrM 14955 1 0 0 1 0 0 0 16-3584
+chrM 14956 1 0 1 0 0 0 0 16-3584
+chrM 14957 1 0 0 0 1 0 0 16-3584
+chrM 14958 1 1 0 0 0 0 0 16-3584
+chrM 14959 1 1 0 0 0 0 0 16-3584
+chrM 14960 1 0 1 0 0 0 0 16-3584
+chrM 14961 1 1 0 0 0 0 0 16-3584
+chrM 14962 1 0 0 1 0 0 0 16-3584
+chrM 14963 1 1 0 0 0 0 0 16-3584
+chrM 14964 1 0 1 0 0 0 0 16-3584
diff --git a/test/issue225.z.out b/test/issue225.z.out
new file mode 100644
index 0000000..f4fabdf
--- /dev/null
+++ b/test/issue225.z.out
@@ -0,0 +1,16572 @@
+REF POS COV A C G T DEL REFSKIP SAMPLE
+chrM 0 0 0 0 0 0 0 0 16-3584
+chrM 1 0 0 0 0 0 0 0 16-3584
+chrM 2 0 0 0 0 0 0 0 16-3584
+chrM 3 0 0 0 0 0 0 0 16-3584
+chrM 4 0 0 0 0 0 0 0 16-3584
+chrM 5 0 0 0 0 0 0 0 16-3584
+chrM 6 0 0 0 0 0 0 0 16-3584
+chrM 7 0 0 0 0 0 0 0 16-3584
+chrM 8 0 0 0 0 0 0 0 16-3584
+chrM 9 0 0 0 0 0 0 0 16-3584
+chrM 10 0 0 0 0 0 0 0 16-3584
+chrM 11 0 0 0 0 0 0 0 16-3584
+chrM 12 0 0 0 0 0 0 0 16-3584
+chrM 13 0 0 0 0 0 0 0 16-3584
+chrM 14 0 0 0 0 0 0 0 16-3584
+chrM 15 0 0 0 0 0 0 0 16-3584
+chrM 16 0 0 0 0 0 0 0 16-3584
+chrM 17 0 0 0 0 0 0 0 16-3584
+chrM 18 0 0 0 0 0 0 0 16-3584
+chrM 19 0 0 0 0 0 0 0 16-3584
+chrM 20 0 0 0 0 0 0 0 16-3584
+chrM 21 0 0 0 0 0 0 0 16-3584
+chrM 22 0 0 0 0 0 0 0 16-3584
+chrM 23 0 0 0 0 0 0 0 16-3584
+chrM 24 0 0 0 0 0 0 0 16-3584
+chrM 25 0 0 0 0 0 0 0 16-3584
+chrM 26 0 0 0 0 0 0 0 16-3584
+chrM 27 0 0 0 0 0 0 0 16-3584
+chrM 28 0 0 0 0 0 0 0 16-3584
+chrM 29 0 0 0 0 0 0 0 16-3584
+chrM 30 0 0 0 0 0 0 0 16-3584
+chrM 31 0 0 0 0 0 0 0 16-3584
+chrM 32 0 0 0 0 0 0 0 16-3584
+chrM 33 0 0 0 0 0 0 0 16-3584
+chrM 34 0 0 0 0 0 0 0 16-3584
+chrM 35 0 0 0 0 0 0 0 16-3584
+chrM 36 0 0 0 0 0 0 0 16-3584
+chrM 37 0 0 0 0 0 0 0 16-3584
+chrM 38 0 0 0 0 0 0 0 16-3584
+chrM 39 0 0 0 0 0 0 0 16-3584
+chrM 40 0 0 0 0 0 0 0 16-3584
+chrM 41 0 0 0 0 0 0 0 16-3584
+chrM 42 0 0 0 0 0 0 0 16-3584
+chrM 43 0 0 0 0 0 0 0 16-3584
+chrM 44 0 0 0 0 0 0 0 16-3584
+chrM 45 0 0 0 0 0 0 0 16-3584
+chrM 46 0 0 0 0 0 0 0 16-3584
+chrM 47 0 0 0 0 0 0 0 16-3584
+chrM 48 0 0 0 0 0 0 0 16-3584
+chrM 49 0 0 0 0 0 0 0 16-3584
+chrM 50 0 0 0 0 0 0 0 16-3584
+chrM 51 0 0 0 0 0 0 0 16-3584
+chrM 52 0 0 0 0 0 0 0 16-3584
+chrM 53 0 0 0 0 0 0 0 16-3584
+chrM 54 0 0 0 0 0 0 0 16-3584
+chrM 55 0 0 0 0 0 0 0 16-3584
+chrM 56 0 0 0 0 0 0 0 16-3584
+chrM 57 0 0 0 0 0 0 0 16-3584
+chrM 58 0 0 0 0 0 0 0 16-3584
+chrM 59 0 0 0 0 0 0 0 16-3584
+chrM 60 0 0 0 0 0 0 0 16-3584
+chrM 61 0 0 0 0 0 0 0 16-3584
+chrM 62 0 0 0 0 0 0 0 16-3584
+chrM 63 0 0 0 0 0 0 0 16-3584
+chrM 64 0 0 0 0 0 0 0 16-3584
+chrM 65 0 0 0 0 0 0 0 16-3584
+chrM 66 0 0 0 0 0 0 0 16-3584
+chrM 67 0 0 0 0 0 0 0 16-3584
+chrM 68 0 0 0 0 0 0 0 16-3584
+chrM 69 0 0 0 0 0 0 0 16-3584
+chrM 70 0 0 0 0 0 0 0 16-3584
+chrM 71 0 0 0 0 0 0 0 16-3584
+chrM 72 0 0 0 0 0 0 0 16-3584
+chrM 73 0 0 0 0 0 0 0 16-3584
+chrM 74 0 0 0 0 0 0 0 16-3584
+chrM 75 0 0 0 0 0 0 0 16-3584
+chrM 76 0 0 0 0 0 0 0 16-3584
+chrM 77 0 0 0 0 0 0 0 16-3584
+chrM 78 0 0 0 0 0 0 0 16-3584
+chrM 79 0 0 0 0 0 0 0 16-3584
+chrM 80 0 0 0 0 0 0 0 16-3584
+chrM 81 0 0 0 0 0 0 0 16-3584
+chrM 82 0 0 0 0 0 0 0 16-3584
+chrM 83 0 0 0 0 0 0 0 16-3584
+chrM 84 0 0 0 0 0 0 0 16-3584
+chrM 85 0 0 0 0 0 0 0 16-3584
+chrM 86 0 0 0 0 0 0 0 16-3584
+chrM 87 0 0 0 0 0 0 0 16-3584
+chrM 88 0 0 0 0 0 0 0 16-3584
+chrM 89 0 0 0 0 0 0 0 16-3584
+chrM 90 0 0 0 0 0 0 0 16-3584
+chrM 91 0 0 0 0 0 0 0 16-3584
+chrM 92 0 0 0 0 0 0 0 16-3584
+chrM 93 0 0 0 0 0 0 0 16-3584
+chrM 94 0 0 0 0 0 0 0 16-3584
+chrM 95 0 0 0 0 0 0 0 16-3584
+chrM 96 0 0 0 0 0 0 0 16-3584
+chrM 97 0 0 0 0 0 0 0 16-3584
+chrM 98 0 0 0 0 0 0 0 16-3584
+chrM 99 0 0 0 0 0 0 0 16-3584
+chrM 100 0 0 0 0 0 0 0 16-3584
+chrM 101 0 0 0 0 0 0 0 16-3584
+chrM 102 0 0 0 0 0 0 0 16-3584
+chrM 103 0 0 0 0 0 0 0 16-3584
+chrM 104 0 0 0 0 0 0 0 16-3584
+chrM 105 0 0 0 0 0 0 0 16-3584
+chrM 106 0 0 0 0 0 0 0 16-3584
+chrM 107 0 0 0 0 0 0 0 16-3584
+chrM 108 0 0 0 0 0 0 0 16-3584
+chrM 109 0 0 0 0 0 0 0 16-3584
+chrM 110 0 0 0 0 0 0 0 16-3584
+chrM 111 0 0 0 0 0 0 0 16-3584
+chrM 112 0 0 0 0 0 0 0 16-3584
+chrM 113 0 0 0 0 0 0 0 16-3584
+chrM 114 0 0 0 0 0 0 0 16-3584
+chrM 115 0 0 0 0 0 0 0 16-3584
+chrM 116 0 0 0 0 0 0 0 16-3584
+chrM 117 0 0 0 0 0 0 0 16-3584
+chrM 118 0 0 0 0 0 0 0 16-3584
+chrM 119 0 0 0 0 0 0 0 16-3584
+chrM 120 0 0 0 0 0 0 0 16-3584
+chrM 121 0 0 0 0 0 0 0 16-3584
+chrM 122 0 0 0 0 0 0 0 16-3584
+chrM 123 0 0 0 0 0 0 0 16-3584
+chrM 124 0 0 0 0 0 0 0 16-3584
+chrM 125 0 0 0 0 0 0 0 16-3584
+chrM 126 0 0 0 0 0 0 0 16-3584
+chrM 127 0 0 0 0 0 0 0 16-3584
+chrM 128 0 0 0 0 0 0 0 16-3584
+chrM 129 0 0 0 0 0 0 0 16-3584
+chrM 130 0 0 0 0 0 0 0 16-3584
+chrM 131 0 0 0 0 0 0 0 16-3584
+chrM 132 0 0 0 0 0 0 0 16-3584
+chrM 133 0 0 0 0 0 0 0 16-3584
+chrM 134 0 0 0 0 0 0 0 16-3584
+chrM 135 0 0 0 0 0 0 0 16-3584
+chrM 136 0 0 0 0 0 0 0 16-3584
+chrM 137 0 0 0 0 0 0 0 16-3584
+chrM 138 0 0 0 0 0 0 0 16-3584
+chrM 139 0 0 0 0 0 0 0 16-3584
+chrM 140 0 0 0 0 0 0 0 16-3584
+chrM 141 0 0 0 0 0 0 0 16-3584
+chrM 142 0 0 0 0 0 0 0 16-3584
+chrM 143 0 0 0 0 0 0 0 16-3584
+chrM 144 0 0 0 0 0 0 0 16-3584
+chrM 145 0 0 0 0 0 0 0 16-3584
+chrM 146 0 0 0 0 0 0 0 16-3584
+chrM 147 0 0 0 0 0 0 0 16-3584
+chrM 148 0 0 0 0 0 0 0 16-3584
+chrM 149 0 0 0 0 0 0 0 16-3584
+chrM 150 0 0 0 0 0 0 0 16-3584
+chrM 151 0 0 0 0 0 0 0 16-3584
+chrM 152 0 0 0 0 0 0 0 16-3584
+chrM 153 0 0 0 0 0 0 0 16-3584
+chrM 154 0 0 0 0 0 0 0 16-3584
+chrM 155 0 0 0 0 0 0 0 16-3584
+chrM 156 0 0 0 0 0 0 0 16-3584
+chrM 157 0 0 0 0 0 0 0 16-3584
+chrM 158 0 0 0 0 0 0 0 16-3584
+chrM 159 0 0 0 0 0 0 0 16-3584
+chrM 160 0 0 0 0 0 0 0 16-3584
+chrM 161 0 0 0 0 0 0 0 16-3584
+chrM 162 0 0 0 0 0 0 0 16-3584
+chrM 163 0 0 0 0 0 0 0 16-3584
+chrM 164 0 0 0 0 0 0 0 16-3584
+chrM 165 0 0 0 0 0 0 0 16-3584
+chrM 166 0 0 0 0 0 0 0 16-3584
+chrM 167 0 0 0 0 0 0 0 16-3584
+chrM 168 0 0 0 0 0 0 0 16-3584
+chrM 169 0 0 0 0 0 0 0 16-3584
+chrM 170 0 0 0 0 0 0 0 16-3584
+chrM 171 0 0 0 0 0 0 0 16-3584
+chrM 172 0 0 0 0 0 0 0 16-3584
+chrM 173 0 0 0 0 0 0 0 16-3584
+chrM 174 0 0 0 0 0 0 0 16-3584
+chrM 175 0 0 0 0 0 0 0 16-3584
+chrM 176 0 0 0 0 0 0 0 16-3584
+chrM 177 0 0 0 0 0 0 0 16-3584
+chrM 178 0 0 0 0 0 0 0 16-3584
+chrM 179 0 0 0 0 0 0 0 16-3584
+chrM 180 0 0 0 0 0 0 0 16-3584
+chrM 181 0 0 0 0 0 0 0 16-3584
+chrM 182 0 0 0 0 0 0 0 16-3584
+chrM 183 0 0 0 0 0 0 0 16-3584
+chrM 184 0 0 0 0 0 0 0 16-3584
+chrM 185 0 0 0 0 0 0 0 16-3584
+chrM 186 0 0 0 0 0 0 0 16-3584
+chrM 187 0 0 0 0 0 0 0 16-3584
+chrM 188 0 0 0 0 0 0 0 16-3584
+chrM 189 0 0 0 0 0 0 0 16-3584
+chrM 190 0 0 0 0 0 0 0 16-3584
+chrM 191 0 0 0 0 0 0 0 16-3584
+chrM 192 0 0 0 0 0 0 0 16-3584
+chrM 193 0 0 0 0 0 0 0 16-3584
+chrM 194 0 0 0 0 0 0 0 16-3584
+chrM 195 0 0 0 0 0 0 0 16-3584
+chrM 196 0 0 0 0 0 0 0 16-3584
+chrM 197 0 0 0 0 0 0 0 16-3584
+chrM 198 0 0 0 0 0 0 0 16-3584
+chrM 199 0 0 0 0 0 0 0 16-3584
+chrM 200 0 0 0 0 0 0 0 16-3584
+chrM 201 0 0 0 0 0 0 0 16-3584
+chrM 202 0 0 0 0 0 0 0 16-3584
+chrM 203 0 0 0 0 0 0 0 16-3584
+chrM 204 0 0 0 0 0 0 0 16-3584
+chrM 205 0 0 0 0 0 0 0 16-3584
+chrM 206 0 0 0 0 0 0 0 16-3584
+chrM 207 0 0 0 0 0 0 0 16-3584
+chrM 208 0 0 0 0 0 0 0 16-3584
+chrM 209 0 0 0 0 0 0 0 16-3584
+chrM 210 0 0 0 0 0 0 0 16-3584
+chrM 211 0 0 0 0 0 0 0 16-3584
+chrM 212 0 0 0 0 0 0 0 16-3584
+chrM 213 0 0 0 0 0 0 0 16-3584
+chrM 214 0 0 0 0 0 0 0 16-3584
+chrM 215 0 0 0 0 0 0 0 16-3584
+chrM 216 0 0 0 0 0 0 0 16-3584
+chrM 217 0 0 0 0 0 0 0 16-3584
+chrM 218 0 0 0 0 0 0 0 16-3584
+chrM 219 0 0 0 0 0 0 0 16-3584
+chrM 220 0 0 0 0 0 0 0 16-3584
+chrM 221 0 0 0 0 0 0 0 16-3584
+chrM 222 0 0 0 0 0 0 0 16-3584
+chrM 223 0 0 0 0 0 0 0 16-3584
+chrM 224 0 0 0 0 0 0 0 16-3584
+chrM 225 0 0 0 0 0 0 0 16-3584
+chrM 226 0 0 0 0 0 0 0 16-3584
+chrM 227 0 0 0 0 0 0 0 16-3584
+chrM 228 0 0 0 0 0 0 0 16-3584
+chrM 229 0 0 0 0 0 0 0 16-3584
+chrM 230 0 0 0 0 0 0 0 16-3584
+chrM 231 0 0 0 0 0 0 0 16-3584
+chrM 232 0 0 0 0 0 0 0 16-3584
+chrM 233 0 0 0 0 0 0 0 16-3584
+chrM 234 0 0 0 0 0 0 0 16-3584
+chrM 235 0 0 0 0 0 0 0 16-3584
+chrM 236 0 0 0 0 0 0 0 16-3584
+chrM 237 0 0 0 0 0 0 0 16-3584
+chrM 238 0 0 0 0 0 0 0 16-3584
+chrM 239 0 0 0 0 0 0 0 16-3584
+chrM 240 0 0 0 0 0 0 0 16-3584
+chrM 241 0 0 0 0 0 0 0 16-3584
+chrM 242 0 0 0 0 0 0 0 16-3584
+chrM 243 0 0 0 0 0 0 0 16-3584
+chrM 244 0 0 0 0 0 0 0 16-3584
+chrM 245 0 0 0 0 0 0 0 16-3584
+chrM 246 0 0 0 0 0 0 0 16-3584
+chrM 247 0 0 0 0 0 0 0 16-3584
+chrM 248 0 0 0 0 0 0 0 16-3584
+chrM 249 0 0 0 0 0 0 0 16-3584
+chrM 250 0 0 0 0 0 0 0 16-3584
+chrM 251 0 0 0 0 0 0 0 16-3584
+chrM 252 0 0 0 0 0 0 0 16-3584
+chrM 253 0 0 0 0 0 0 0 16-3584
+chrM 254 0 0 0 0 0 0 0 16-3584
+chrM 255 0 0 0 0 0 0 0 16-3584
+chrM 256 0 0 0 0 0 0 0 16-3584
+chrM 257 0 0 0 0 0 0 0 16-3584
+chrM 258 0 0 0 0 0 0 0 16-3584
+chrM 259 0 0 0 0 0 0 0 16-3584
+chrM 260 0 0 0 0 0 0 0 16-3584
+chrM 261 0 0 0 0 0 0 0 16-3584
+chrM 262 0 0 0 0 0 0 0 16-3584
+chrM 263 0 0 0 0 0 0 0 16-3584
+chrM 264 0 0 0 0 0 0 0 16-3584
+chrM 265 0 0 0 0 0 0 0 16-3584
+chrM 266 0 0 0 0 0 0 0 16-3584
+chrM 267 0 0 0 0 0 0 0 16-3584
+chrM 268 0 0 0 0 0 0 0 16-3584
+chrM 269 0 0 0 0 0 0 0 16-3584
+chrM 270 0 0 0 0 0 0 0 16-3584
+chrM 271 0 0 0 0 0 0 0 16-3584
+chrM 272 0 0 0 0 0 0 0 16-3584
+chrM 273 0 0 0 0 0 0 0 16-3584
+chrM 274 0 0 0 0 0 0 0 16-3584
+chrM 275 0 0 0 0 0 0 0 16-3584
+chrM 276 0 0 0 0 0 0 0 16-3584
+chrM 277 0 0 0 0 0 0 0 16-3584
+chrM 278 0 0 0 0 0 0 0 16-3584
+chrM 279 0 0 0 0 0 0 0 16-3584
+chrM 280 0 0 0 0 0 0 0 16-3584
+chrM 281 0 0 0 0 0 0 0 16-3584
+chrM 282 0 0 0 0 0 0 0 16-3584
+chrM 283 0 0 0 0 0 0 0 16-3584
+chrM 284 0 0 0 0 0 0 0 16-3584
+chrM 285 0 0 0 0 0 0 0 16-3584
+chrM 286 0 0 0 0 0 0 0 16-3584
+chrM 287 0 0 0 0 0 0 0 16-3584
+chrM 288 0 0 0 0 0 0 0 16-3584
+chrM 289 0 0 0 0 0 0 0 16-3584
+chrM 290 0 0 0 0 0 0 0 16-3584
+chrM 291 0 0 0 0 0 0 0 16-3584
+chrM 292 0 0 0 0 0 0 0 16-3584
+chrM 293 0 0 0 0 0 0 0 16-3584
+chrM 294 0 0 0 0 0 0 0 16-3584
+chrM 295 0 0 0 0 0 0 0 16-3584
+chrM 296 0 0 0 0 0 0 0 16-3584
+chrM 297 0 0 0 0 0 0 0 16-3584
+chrM 298 0 0 0 0 0 0 0 16-3584
+chrM 299 0 0 0 0 0 0 0 16-3584
+chrM 300 0 0 0 0 0 0 0 16-3584
+chrM 301 0 0 0 0 0 0 0 16-3584
+chrM 302 0 0 0 0 0 0 0 16-3584
+chrM 303 0 0 0 0 0 0 0 16-3584
+chrM 304 0 0 0 0 0 0 0 16-3584
+chrM 305 0 0 0 0 0 0 0 16-3584
+chrM 306 0 0 0 0 0 0 0 16-3584
+chrM 307 0 0 0 0 0 0 0 16-3584
+chrM 308 0 0 0 0 0 0 0 16-3584
+chrM 309 0 0 0 0 0 0 0 16-3584
+chrM 310 0 0 0 0 0 0 0 16-3584
+chrM 311 0 0 0 0 0 0 0 16-3584
+chrM 312 0 0 0 0 0 0 0 16-3584
+chrM 313 0 0 0 0 0 0 0 16-3584
+chrM 314 0 0 0 0 0 0 0 16-3584
+chrM 315 0 0 0 0 0 0 0 16-3584
+chrM 316 0 0 0 0 0 0 0 16-3584
+chrM 317 0 0 0 0 0 0 0 16-3584
+chrM 318 0 0 0 0 0 0 0 16-3584
+chrM 319 0 0 0 0 0 0 0 16-3584
+chrM 320 0 0 0 0 0 0 0 16-3584
+chrM 321 0 0 0 0 0 0 0 16-3584
+chrM 322 0 0 0 0 0 0 0 16-3584
+chrM 323 0 0 0 0 0 0 0 16-3584
+chrM 324 0 0 0 0 0 0 0 16-3584
+chrM 325 0 0 0 0 0 0 0 16-3584
+chrM 326 0 0 0 0 0 0 0 16-3584
+chrM 327 0 0 0 0 0 0 0 16-3584
+chrM 328 0 0 0 0 0 0 0 16-3584
+chrM 329 0 0 0 0 0 0 0 16-3584
+chrM 330 0 0 0 0 0 0 0 16-3584
+chrM 331 0 0 0 0 0 0 0 16-3584
+chrM 332 0 0 0 0 0 0 0 16-3584
+chrM 333 0 0 0 0 0 0 0 16-3584
+chrM 334 0 0 0 0 0 0 0 16-3584
+chrM 335 0 0 0 0 0 0 0 16-3584
+chrM 336 0 0 0 0 0 0 0 16-3584
+chrM 337 0 0 0 0 0 0 0 16-3584
+chrM 338 0 0 0 0 0 0 0 16-3584
+chrM 339 0 0 0 0 0 0 0 16-3584
+chrM 340 0 0 0 0 0 0 0 16-3584
+chrM 341 0 0 0 0 0 0 0 16-3584
+chrM 342 0 0 0 0 0 0 0 16-3584
+chrM 343 0 0 0 0 0 0 0 16-3584
+chrM 344 0 0 0 0 0 0 0 16-3584
+chrM 345 0 0 0 0 0 0 0 16-3584
+chrM 346 0 0 0 0 0 0 0 16-3584
+chrM 347 0 0 0 0 0 0 0 16-3584
+chrM 348 0 0 0 0 0 0 0 16-3584
+chrM 349 0 0 0 0 0 0 0 16-3584
+chrM 350 0 0 0 0 0 0 0 16-3584
+chrM 351 0 0 0 0 0 0 0 16-3584
+chrM 352 0 0 0 0 0 0 0 16-3584
+chrM 353 0 0 0 0 0 0 0 16-3584
+chrM 354 0 0 0 0 0 0 0 16-3584
+chrM 355 0 0 0 0 0 0 0 16-3584
+chrM 356 0 0 0 0 0 0 0 16-3584
+chrM 357 0 0 0 0 0 0 0 16-3584
+chrM 358 0 0 0 0 0 0 0 16-3584
+chrM 359 0 0 0 0 0 0 0 16-3584
+chrM 360 0 0 0 0 0 0 0 16-3584
+chrM 361 0 0 0 0 0 0 0 16-3584
+chrM 362 0 0 0 0 0 0 0 16-3584
+chrM 363 0 0 0 0 0 0 0 16-3584
+chrM 364 0 0 0 0 0 0 0 16-3584
+chrM 365 0 0 0 0 0 0 0 16-3584
+chrM 366 0 0 0 0 0 0 0 16-3584
+chrM 367 0 0 0 0 0 0 0 16-3584
+chrM 368 0 0 0 0 0 0 0 16-3584
+chrM 369 0 0 0 0 0 0 0 16-3584
+chrM 370 0 0 0 0 0 0 0 16-3584
+chrM 371 0 0 0 0 0 0 0 16-3584
+chrM 372 0 0 0 0 0 0 0 16-3584
+chrM 373 0 0 0 0 0 0 0 16-3584
+chrM 374 0 0 0 0 0 0 0 16-3584
+chrM 375 0 0 0 0 0 0 0 16-3584
+chrM 376 0 0 0 0 0 0 0 16-3584
+chrM 377 0 0 0 0 0 0 0 16-3584
+chrM 378 0 0 0 0 0 0 0 16-3584
+chrM 379 0 0 0 0 0 0 0 16-3584
+chrM 380 0 0 0 0 0 0 0 16-3584
+chrM 381 0 0 0 0 0 0 0 16-3584
+chrM 382 0 0 0 0 0 0 0 16-3584
+chrM 383 0 0 0 0 0 0 0 16-3584
+chrM 384 0 0 0 0 0 0 0 16-3584
+chrM 385 0 0 0 0 0 0 0 16-3584
+chrM 386 0 0 0 0 0 0 0 16-3584
+chrM 387 0 0 0 0 0 0 0 16-3584
+chrM 388 0 0 0 0 0 0 0 16-3584
+chrM 389 0 0 0 0 0 0 0 16-3584
+chrM 390 0 0 0 0 0 0 0 16-3584
+chrM 391 0 0 0 0 0 0 0 16-3584
+chrM 392 0 0 0 0 0 0 0 16-3584
+chrM 393 0 0 0 0 0 0 0 16-3584
+chrM 394 0 0 0 0 0 0 0 16-3584
+chrM 395 0 0 0 0 0 0 0 16-3584
+chrM 396 0 0 0 0 0 0 0 16-3584
+chrM 397 0 0 0 0 0 0 0 16-3584
+chrM 398 0 0 0 0 0 0 0 16-3584
+chrM 399 0 0 0 0 0 0 0 16-3584
+chrM 400 0 0 0 0 0 0 0 16-3584
+chrM 401 0 0 0 0 0 0 0 16-3584
+chrM 402 0 0 0 0 0 0 0 16-3584
+chrM 403 0 0 0 0 0 0 0 16-3584
+chrM 404 0 0 0 0 0 0 0 16-3584
+chrM 405 0 0 0 0 0 0 0 16-3584
+chrM 406 0 0 0 0 0 0 0 16-3584
+chrM 407 0 0 0 0 0 0 0 16-3584
+chrM 408 0 0 0 0 0 0 0 16-3584
+chrM 409 0 0 0 0 0 0 0 16-3584
+chrM 410 0 0 0 0 0 0 0 16-3584
+chrM 411 0 0 0 0 0 0 0 16-3584
+chrM 412 0 0 0 0 0 0 0 16-3584
+chrM 413 0 0 0 0 0 0 0 16-3584
+chrM 414 0 0 0 0 0 0 0 16-3584
+chrM 415 0 0 0 0 0 0 0 16-3584
+chrM 416 0 0 0 0 0 0 0 16-3584
+chrM 417 0 0 0 0 0 0 0 16-3584
+chrM 418 0 0 0 0 0 0 0 16-3584
+chrM 419 0 0 0 0 0 0 0 16-3584
+chrM 420 0 0 0 0 0 0 0 16-3584
+chrM 421 0 0 0 0 0 0 0 16-3584
+chrM 422 0 0 0 0 0 0 0 16-3584
+chrM 423 0 0 0 0 0 0 0 16-3584
+chrM 424 0 0 0 0 0 0 0 16-3584
+chrM 425 0 0 0 0 0 0 0 16-3584
+chrM 426 0 0 0 0 0 0 0 16-3584
+chrM 427 0 0 0 0 0 0 0 16-3584
+chrM 428 0 0 0 0 0 0 0 16-3584
+chrM 429 0 0 0 0 0 0 0 16-3584
+chrM 430 0 0 0 0 0 0 0 16-3584
+chrM 431 0 0 0 0 0 0 0 16-3584
+chrM 432 0 0 0 0 0 0 0 16-3584
+chrM 433 0 0 0 0 0 0 0 16-3584
+chrM 434 0 0 0 0 0 0 0 16-3584
+chrM 435 0 0 0 0 0 0 0 16-3584
+chrM 436 0 0 0 0 0 0 0 16-3584
+chrM 437 0 0 0 0 0 0 0 16-3584
+chrM 438 0 0 0 0 0 0 0 16-3584
+chrM 439 0 0 0 0 0 0 0 16-3584
+chrM 440 0 0 0 0 0 0 0 16-3584
+chrM 441 0 0 0 0 0 0 0 16-3584
+chrM 442 0 0 0 0 0 0 0 16-3584
+chrM 443 0 0 0 0 0 0 0 16-3584
+chrM 444 0 0 0 0 0 0 0 16-3584
+chrM 445 0 0 0 0 0 0 0 16-3584
+chrM 446 0 0 0 0 0 0 0 16-3584
+chrM 447 0 0 0 0 0 0 0 16-3584
+chrM 448 0 0 0 0 0 0 0 16-3584
+chrM 449 0 0 0 0 0 0 0 16-3584
+chrM 450 0 0 0 0 0 0 0 16-3584
+chrM 451 0 0 0 0 0 0 0 16-3584
+chrM 452 0 0 0 0 0 0 0 16-3584
+chrM 453 0 0 0 0 0 0 0 16-3584
+chrM 454 0 0 0 0 0 0 0 16-3584
+chrM 455 0 0 0 0 0 0 0 16-3584
+chrM 456 0 0 0 0 0 0 0 16-3584
+chrM 457 0 0 0 0 0 0 0 16-3584
+chrM 458 0 0 0 0 0 0 0 16-3584
+chrM 459 0 0 0 0 0 0 0 16-3584
+chrM 460 0 0 0 0 0 0 0 16-3584
+chrM 461 0 0 0 0 0 0 0 16-3584
+chrM 462 0 0 0 0 0 0 0 16-3584
+chrM 463 0 0 0 0 0 0 0 16-3584
+chrM 464 0 0 0 0 0 0 0 16-3584
+chrM 465 0 0 0 0 0 0 0 16-3584
+chrM 466 0 0 0 0 0 0 0 16-3584
+chrM 467 0 0 0 0 0 0 0 16-3584
+chrM 468 0 0 0 0 0 0 0 16-3584
+chrM 469 0 0 0 0 0 0 0 16-3584
+chrM 470 0 0 0 0 0 0 0 16-3584
+chrM 471 0 0 0 0 0 0 0 16-3584
+chrM 472 0 0 0 0 0 0 0 16-3584
+chrM 473 0 0 0 0 0 0 0 16-3584
+chrM 474 0 0 0 0 0 0 0 16-3584
+chrM 475 0 0 0 0 0 0 0 16-3584
+chrM 476 0 0 0 0 0 0 0 16-3584
+chrM 477 0 0 0 0 0 0 0 16-3584
+chrM 478 0 0 0 0 0 0 0 16-3584
+chrM 479 0 0 0 0 0 0 0 16-3584
+chrM 480 0 0 0 0 0 0 0 16-3584
+chrM 481 0 0 0 0 0 0 0 16-3584
+chrM 482 0 0 0 0 0 0 0 16-3584
+chrM 483 0 0 0 0 0 0 0 16-3584
+chrM 484 0 0 0 0 0 0 0 16-3584
+chrM 485 0 0 0 0 0 0 0 16-3584
+chrM 486 0 0 0 0 0 0 0 16-3584
+chrM 487 0 0 0 0 0 0 0 16-3584
+chrM 488 0 0 0 0 0 0 0 16-3584
+chrM 489 0 0 0 0 0 0 0 16-3584
+chrM 490 0 0 0 0 0 0 0 16-3584
+chrM 491 0 0 0 0 0 0 0 16-3584
+chrM 492 0 0 0 0 0 0 0 16-3584
+chrM 493 0 0 0 0 0 0 0 16-3584
+chrM 494 0 0 0 0 0 0 0 16-3584
+chrM 495 0 0 0 0 0 0 0 16-3584
+chrM 496 0 0 0 0 0 0 0 16-3584
+chrM 497 0 0 0 0 0 0 0 16-3584
+chrM 498 0 0 0 0 0 0 0 16-3584
+chrM 499 0 0 0 0 0 0 0 16-3584
+chrM 500 0 0 0 0 0 0 0 16-3584
+chrM 501 0 0 0 0 0 0 0 16-3584
+chrM 502 0 0 0 0 0 0 0 16-3584
+chrM 503 0 0 0 0 0 0 0 16-3584
+chrM 504 0 0 0 0 0 0 0 16-3584
+chrM 505 0 0 0 0 0 0 0 16-3584
+chrM 506 0 0 0 0 0 0 0 16-3584
+chrM 507 0 0 0 0 0 0 0 16-3584
+chrM 508 0 0 0 0 0 0 0 16-3584
+chrM 509 0 0 0 0 0 0 0 16-3584
+chrM 510 0 0 0 0 0 0 0 16-3584
+chrM 511 0 0 0 0 0 0 0 16-3584
+chrM 512 0 0 0 0 0 0 0 16-3584
+chrM 513 0 0 0 0 0 0 0 16-3584
+chrM 514 0 0 0 0 0 0 0 16-3584
+chrM 515 0 0 0 0 0 0 0 16-3584
+chrM 516 0 0 0 0 0 0 0 16-3584
+chrM 517 0 0 0 0 0 0 0 16-3584
+chrM 518 0 0 0 0 0 0 0 16-3584
+chrM 519 0 0 0 0 0 0 0 16-3584
+chrM 520 0 0 0 0 0 0 0 16-3584
+chrM 521 0 0 0 0 0 0 0 16-3584
+chrM 522 0 0 0 0 0 0 0 16-3584
+chrM 523 0 0 0 0 0 0 0 16-3584
+chrM 524 0 0 0 0 0 0 0 16-3584
+chrM 525 0 0 0 0 0 0 0 16-3584
+chrM 526 0 0 0 0 0 0 0 16-3584
+chrM 527 0 0 0 0 0 0 0 16-3584
+chrM 528 0 0 0 0 0 0 0 16-3584
+chrM 529 0 0 0 0 0 0 0 16-3584
+chrM 530 0 0 0 0 0 0 0 16-3584
+chrM 531 0 0 0 0 0 0 0 16-3584
+chrM 532 0 0 0 0 0 0 0 16-3584
+chrM 533 0 0 0 0 0 0 0 16-3584
+chrM 534 0 0 0 0 0 0 0 16-3584
+chrM 535 0 0 0 0 0 0 0 16-3584
+chrM 536 0 0 0 0 0 0 0 16-3584
+chrM 537 0 0 0 0 0 0 0 16-3584
+chrM 538 0 0 0 0 0 0 0 16-3584
+chrM 539 0 0 0 0 0 0 0 16-3584
+chrM 540 0 0 0 0 0 0 0 16-3584
+chrM 541 0 0 0 0 0 0 0 16-3584
+chrM 542 0 0 0 0 0 0 0 16-3584
+chrM 543 0 0 0 0 0 0 0 16-3584
+chrM 544 0 0 0 0 0 0 0 16-3584
+chrM 545 0 0 0 0 0 0 0 16-3584
+chrM 546 0 0 0 0 0 0 0 16-3584
+chrM 547 0 0 0 0 0 0 0 16-3584
+chrM 548 0 0 0 0 0 0 0 16-3584
+chrM 549 0 0 0 0 0 0 0 16-3584
+chrM 550 0 0 0 0 0 0 0 16-3584
+chrM 551 0 0 0 0 0 0 0 16-3584
+chrM 552 0 0 0 0 0 0 0 16-3584
+chrM 553 0 0 0 0 0 0 0 16-3584
+chrM 554 0 0 0 0 0 0 0 16-3584
+chrM 555 0 0 0 0 0 0 0 16-3584
+chrM 556 0 0 0 0 0 0 0 16-3584
+chrM 557 0 0 0 0 0 0 0 16-3584
+chrM 558 0 0 0 0 0 0 0 16-3584
+chrM 559 0 0 0 0 0 0 0 16-3584
+chrM 560 0 0 0 0 0 0 0 16-3584
+chrM 561 0 0 0 0 0 0 0 16-3584
+chrM 562 0 0 0 0 0 0 0 16-3584
+chrM 563 0 0 0 0 0 0 0 16-3584
+chrM 564 0 0 0 0 0 0 0 16-3584
+chrM 565 0 0 0 0 0 0 0 16-3584
+chrM 566 0 0 0 0 0 0 0 16-3584
+chrM 567 0 0 0 0 0 0 0 16-3584
+chrM 568 0 0 0 0 0 0 0 16-3584
+chrM 569 0 0 0 0 0 0 0 16-3584
+chrM 570 0 0 0 0 0 0 0 16-3584
+chrM 571 0 0 0 0 0 0 0 16-3584
+chrM 572 0 0 0 0 0 0 0 16-3584
+chrM 573 0 0 0 0 0 0 0 16-3584
+chrM 574 0 0 0 0 0 0 0 16-3584
+chrM 575 0 0 0 0 0 0 0 16-3584
+chrM 576 0 0 0 0 0 0 0 16-3584
+chrM 577 0 0 0 0 0 0 0 16-3584
+chrM 578 0 0 0 0 0 0 0 16-3584
+chrM 579 0 0 0 0 0 0 0 16-3584
+chrM 580 0 0 0 0 0 0 0 16-3584
+chrM 581 0 0 0 0 0 0 0 16-3584
+chrM 582 0 0 0 0 0 0 0 16-3584
+chrM 583 0 0 0 0 0 0 0 16-3584
+chrM 584 0 0 0 0 0 0 0 16-3584
+chrM 585 0 0 0 0 0 0 0 16-3584
+chrM 586 0 0 0 0 0 0 0 16-3584
+chrM 587 0 0 0 0 0 0 0 16-3584
+chrM 588 0 0 0 0 0 0 0 16-3584
+chrM 589 0 0 0 0 0 0 0 16-3584
+chrM 590 0 0 0 0 0 0 0 16-3584
+chrM 591 0 0 0 0 0 0 0 16-3584
+chrM 592 0 0 0 0 0 0 0 16-3584
+chrM 593 0 0 0 0 0 0 0 16-3584
+chrM 594 0 0 0 0 0 0 0 16-3584
+chrM 595 0 0 0 0 0 0 0 16-3584
+chrM 596 0 0 0 0 0 0 0 16-3584
+chrM 597 0 0 0 0 0 0 0 16-3584
+chrM 598 0 0 0 0 0 0 0 16-3584
+chrM 599 0 0 0 0 0 0 0 16-3584
+chrM 600 0 0 0 0 0 0 0 16-3584
+chrM 601 0 0 0 0 0 0 0 16-3584
+chrM 602 0 0 0 0 0 0 0 16-3584
+chrM 603 0 0 0 0 0 0 0 16-3584
+chrM 604 0 0 0 0 0 0 0 16-3584
+chrM 605 0 0 0 0 0 0 0 16-3584
+chrM 606 0 0 0 0 0 0 0 16-3584
+chrM 607 0 0 0 0 0 0 0 16-3584
+chrM 608 0 0 0 0 0 0 0 16-3584
+chrM 609 0 0 0 0 0 0 0 16-3584
+chrM 610 0 0 0 0 0 0 0 16-3584
+chrM 611 0 0 0 0 0 0 0 16-3584
+chrM 612 0 0 0 0 0 0 0 16-3584
+chrM 613 0 0 0 0 0 0 0 16-3584
+chrM 614 0 0 0 0 0 0 0 16-3584
+chrM 615 0 0 0 0 0 0 0 16-3584
+chrM 616 0 0 0 0 0 0 0 16-3584
+chrM 617 0 0 0 0 0 0 0 16-3584
+chrM 618 0 0 0 0 0 0 0 16-3584
+chrM 619 0 0 0 0 0 0 0 16-3584
+chrM 620 0 0 0 0 0 0 0 16-3584
+chrM 621 0 0 0 0 0 0 0 16-3584
+chrM 622 0 0 0 0 0 0 0 16-3584
+chrM 623 0 0 0 0 0 0 0 16-3584
+chrM 624 0 0 0 0 0 0 0 16-3584
+chrM 625 0 0 0 0 0 0 0 16-3584
+chrM 626 0 0 0 0 0 0 0 16-3584
+chrM 627 0 0 0 0 0 0 0 16-3584
+chrM 628 0 0 0 0 0 0 0 16-3584
+chrM 629 0 0 0 0 0 0 0 16-3584
+chrM 630 0 0 0 0 0 0 0 16-3584
+chrM 631 0 0 0 0 0 0 0 16-3584
+chrM 632 0 0 0 0 0 0 0 16-3584
+chrM 633 0 0 0 0 0 0 0 16-3584
+chrM 634 0 0 0 0 0 0 0 16-3584
+chrM 635 0 0 0 0 0 0 0 16-3584
+chrM 636 0 0 0 0 0 0 0 16-3584
+chrM 637 0 0 0 0 0 0 0 16-3584
+chrM 638 0 0 0 0 0 0 0 16-3584
+chrM 639 0 0 0 0 0 0 0 16-3584
+chrM 640 0 0 0 0 0 0 0 16-3584
+chrM 641 0 0 0 0 0 0 0 16-3584
+chrM 642 0 0 0 0 0 0 0 16-3584
+chrM 643 0 0 0 0 0 0 0 16-3584
+chrM 644 0 0 0 0 0 0 0 16-3584
+chrM 645 0 0 0 0 0 0 0 16-3584
+chrM 646 0 0 0 0 0 0 0 16-3584
+chrM 647 0 0 0 0 0 0 0 16-3584
+chrM 648 0 0 0 0 0 0 0 16-3584
+chrM 649 0 0 0 0 0 0 0 16-3584
+chrM 650 0 0 0 0 0 0 0 16-3584
+chrM 651 0 0 0 0 0 0 0 16-3584
+chrM 652 0 0 0 0 0 0 0 16-3584
+chrM 653 0 0 0 0 0 0 0 16-3584
+chrM 654 0 0 0 0 0 0 0 16-3584
+chrM 655 0 0 0 0 0 0 0 16-3584
+chrM 656 0 0 0 0 0 0 0 16-3584
+chrM 657 0 0 0 0 0 0 0 16-3584
+chrM 658 0 0 0 0 0 0 0 16-3584
+chrM 659 0 0 0 0 0 0 0 16-3584
+chrM 660 0 0 0 0 0 0 0 16-3584
+chrM 661 0 0 0 0 0 0 0 16-3584
+chrM 662 0 0 0 0 0 0 0 16-3584
+chrM 663 0 0 0 0 0 0 0 16-3584
+chrM 664 0 0 0 0 0 0 0 16-3584
+chrM 665 0 0 0 0 0 0 0 16-3584
+chrM 666 0 0 0 0 0 0 0 16-3584
+chrM 667 0 0 0 0 0 0 0 16-3584
+chrM 668 0 0 0 0 0 0 0 16-3584
+chrM 669 0 0 0 0 0 0 0 16-3584
+chrM 670 0 0 0 0 0 0 0 16-3584
+chrM 671 0 0 0 0 0 0 0 16-3584
+chrM 672 0 0 0 0 0 0 0 16-3584
+chrM 673 0 0 0 0 0 0 0 16-3584
+chrM 674 0 0 0 0 0 0 0 16-3584
+chrM 675 0 0 0 0 0 0 0 16-3584
+chrM 676 0 0 0 0 0 0 0 16-3584
+chrM 677 0 0 0 0 0 0 0 16-3584
+chrM 678 0 0 0 0 0 0 0 16-3584
+chrM 679 0 0 0 0 0 0 0 16-3584
+chrM 680 0 0 0 0 0 0 0 16-3584
+chrM 681 0 0 0 0 0 0 0 16-3584
+chrM 682 0 0 0 0 0 0 0 16-3584
+chrM 683 0 0 0 0 0 0 0 16-3584
+chrM 684 0 0 0 0 0 0 0 16-3584
+chrM 685 0 0 0 0 0 0 0 16-3584
+chrM 686 0 0 0 0 0 0 0 16-3584
+chrM 687 0 0 0 0 0 0 0 16-3584
+chrM 688 0 0 0 0 0 0 0 16-3584
+chrM 689 0 0 0 0 0 0 0 16-3584
+chrM 690 0 0 0 0 0 0 0 16-3584
+chrM 691 0 0 0 0 0 0 0 16-3584
+chrM 692 0 0 0 0 0 0 0 16-3584
+chrM 693 0 0 0 0 0 0 0 16-3584
+chrM 694 0 0 0 0 0 0 0 16-3584
+chrM 695 0 0 0 0 0 0 0 16-3584
+chrM 696 0 0 0 0 0 0 0 16-3584
+chrM 697 0 0 0 0 0 0 0 16-3584
+chrM 698 0 0 0 0 0 0 0 16-3584
+chrM 699 1 0 1 0 0 0 0 16-3584
+chrM 700 1 0 1 0 0 0 0 16-3584
+chrM 701 1 0 1 0 0 0 0 16-3584
+chrM 702 1 0 0 0 1 0 0 16-3584
+chrM 703 1 1 0 0 0 0 0 16-3584
+chrM 704 2 0 1 0 1 0 0 16-3584
+chrM 705 2 0 1 1 0 0 0 16-3584
+chrM 706 2 0 1 0 1 0 0 16-3584
+chrM 707 2 0 0 1 1 0 0 16-3584
+chrM 708 2 0 1 1 0 0 0 16-3584
+chrM 709 2 1 0 1 0 0 0 16-3584
+chrM 710 2 0 2 0 0 0 0 16-3584
+chrM 711 2 0 0 2 0 0 0 16-3584
+chrM 712 2 0 2 0 0 0 0 16-3584
+chrM 713 2 2 0 0 0 0 0 16-3584
+chrM 714 2 0 1 1 0 0 0 16-3584
+chrM 715 2 1 1 0 0 0 0 16-3584
+chrM 716 2 0 1 1 0 0 0 16-3584
+chrM 717 2 1 0 0 1 0 0 16-3584
+chrM 718 2 1 0 0 1 0 0 16-3584
+chrM 719 2 1 1 0 0 0 0 16-3584
+chrM 720 2 2 0 0 0 0 0 16-3584
+chrM 721 2 1 0 1 0 0 0 16-3584
+chrM 722 2 1 0 0 1 0 0 16-3584
+chrM 723 2 1 1 0 0 0 0 16-3584
+chrM 724 2 0 0 2 0 0 0 16-3584
+chrM 725 2 0 1 0 1 0 0 16-3584
+chrM 726 2 1 0 1 0 0 0 16-3584
+chrM 727 2 0 0 1 1 0 0 16-3584
+chrM 728 2 0 2 0 0 0 0 16-3584
+chrM 729 2 0 0 2 0 0 0 16-3584
+chrM 730 2 0 2 0 0 0 0 16-3584
+chrM 731 2 0 1 0 1 0 0 16-3584
+chrM 732 2 0 1 1 0 0 0 16-3584
+chrM 733 2 2 0 0 0 0 0 16-3584
+chrM 734 2 2 0 0 0 0 0 16-3584
+chrM 735 2 0 1 0 1 0 0 16-3584
+chrM 736 2 2 0 0 0 0 0 16-3584
+chrM 737 2 1 1 0 0 0 0 16-3584
+chrM 738 2 0 1 1 0 0 0 16-3584
+chrM 739 2 0 1 0 1 0 0 16-3584
+chrM 740 2 0 0 2 0 0 0 16-3584
+chrM 741 2 1 0 0 1 0 0 16-3584
+chrM 742 2 1 0 1 0 0 0 16-3584
+chrM 743 2 1 0 1 0 0 0 16-3584
+chrM 744 2 0 0 1 1 0 0 16-3584
+chrM 745 2 1 1 0 0 0 0 16-3584
+chrM 746 2 0 1 1 0 0 0 16-3584
+chrM 747 2 0 1 1 0 0 0 16-3584
+chrM 748 2 1 1 0 0 0 0 16-3584
+chrM 749 2 0 0 1 1 0 0 16-3584
+chrM 750 2 1 1 0 0 0 0 16-3584
+chrM 751 2 1 0 1 0 0 0 16-3584
+chrM 752 2 1 0 1 0 0 0 16-3584
+chrM 753 2 0 1 0 1 0 0 16-3584
+chrM 754 2 1 0 1 0 0 0 16-3584
+chrM 755 2 1 0 0 1 0 0 16-3584
+chrM 756 2 0 0 1 1 0 0 16-3584
+chrM 757 2 1 0 0 1 0 0 16-3584
+chrM 758 2 1 0 0 1 0 0 16-3584
+chrM 759 2 0 1 0 1 0 0 16-3584
+chrM 760 2 0 2 0 0 0 0 16-3584
+chrM 761 2 0 1 1 0 0 0 16-3584
+chrM 762 2 0 1 0 1 0 0 16-3584
+chrM 763 2 0 0 1 1 0 0 16-3584
+chrM 764 2 1 0 1 0 0 0 16-3584
+chrM 765 2 0 1 0 1 0 0 16-3584
+chrM 766 2 1 0 1 0 0 0 16-3584
+chrM 767 2 0 0 0 2 0 0 16-3584
+chrM 768 2 1 0 1 0 0 0 16-3584
+chrM 769 2 0 2 0 0 0 0 16-3584
+chrM 770 2 0 2 0 0 0 0 16-3584
+chrM 771 1 1 0 0 0 0 0 16-3584
+chrM 772 1 0 1 0 0 0 0 16-3584
+chrM 773 1 0 1 0 0 0 0 16-3584
+chrM 774 1 1 0 0 0 0 0 16-3584
+chrM 775 1 0 1 0 0 0 0 16-3584
+chrM 776 0 0 0 0 0 0 0 16-3584
+chrM 777 0 0 0 0 0 0 0 16-3584
+chrM 778 0 0 0 0 0 0 0 16-3584
+chrM 779 0 0 0 0 0 0 0 16-3584
+chrM 780 0 0 0 0 0 0 0 16-3584
+chrM 781 0 0 0 0 0 0 0 16-3584
+chrM 782 0 0 0 0 0 0 0 16-3584
+chrM 783 0 0 0 0 0 0 0 16-3584
+chrM 784 0 0 0 0 0 0 0 16-3584
+chrM 785 0 0 0 0 0 0 0 16-3584
+chrM 786 0 0 0 0 0 0 0 16-3584
+chrM 787 0 0 0 0 0 0 0 16-3584
+chrM 788 0 0 0 0 0 0 0 16-3584
+chrM 789 0 0 0 0 0 0 0 16-3584
+chrM 790 0 0 0 0 0 0 0 16-3584
+chrM 791 0 0 0 0 0 0 0 16-3584
+chrM 792 0 0 0 0 0 0 0 16-3584
+chrM 793 0 0 0 0 0 0 0 16-3584
+chrM 794 0 0 0 0 0 0 0 16-3584
+chrM 795 0 0 0 0 0 0 0 16-3584
+chrM 796 0 0 0 0 0 0 0 16-3584
+chrM 797 0 0 0 0 0 0 0 16-3584
+chrM 798 0 0 0 0 0 0 0 16-3584
+chrM 799 0 0 0 0 0 0 0 16-3584
+chrM 800 0 0 0 0 0 0 0 16-3584
+chrM 801 0 0 0 0 0 0 0 16-3584
+chrM 802 0 0 0 0 0 0 0 16-3584
+chrM 803 0 0 0 0 0 0 0 16-3584
+chrM 804 0 0 0 0 0 0 0 16-3584
+chrM 805 0 0 0 0 0 0 0 16-3584
+chrM 806 0 0 0 0 0 0 0 16-3584
+chrM 807 0 0 0 0 0 0 0 16-3584
+chrM 808 0 0 0 0 0 0 0 16-3584
+chrM 809 0 0 0 0 0 0 0 16-3584
+chrM 810 0 0 0 0 0 0 0 16-3584
+chrM 811 0 0 0 0 0 0 0 16-3584
+chrM 812 0 0 0 0 0 0 0 16-3584
+chrM 813 0 0 0 0 0 0 0 16-3584
+chrM 814 0 0 0 0 0 0 0 16-3584
+chrM 815 0 0 0 0 0 0 0 16-3584
+chrM 816 0 0 0 0 0 0 0 16-3584
+chrM 817 0 0 0 0 0 0 0 16-3584
+chrM 818 0 0 0 0 0 0 0 16-3584
+chrM 819 0 0 0 0 0 0 0 16-3584
+chrM 820 0 0 0 0 0 0 0 16-3584
+chrM 821 0 0 0 0 0 0 0 16-3584
+chrM 822 0 0 0 0 0 0 0 16-3584
+chrM 823 0 0 0 0 0 0 0 16-3584
+chrM 824 0 0 0 0 0 0 0 16-3584
+chrM 825 0 0 0 0 0 0 0 16-3584
+chrM 826 0 0 0 0 0 0 0 16-3584
+chrM 827 0 0 0 0 0 0 0 16-3584
+chrM 828 0 0 0 0 0 0 0 16-3584
+chrM 829 0 0 0 0 0 0 0 16-3584
+chrM 830 0 0 0 0 0 0 0 16-3584
+chrM 831 0 0 0 0 0 0 0 16-3584
+chrM 832 0 0 0 0 0 0 0 16-3584
+chrM 833 0 0 0 0 0 0 0 16-3584
+chrM 834 0 0 0 0 0 0 0 16-3584
+chrM 835 0 0 0 0 0 0 0 16-3584
+chrM 836 0 0 0 0 0 0 0 16-3584
+chrM 837 0 0 0 0 0 0 0 16-3584
+chrM 838 0 0 0 0 0 0 0 16-3584
+chrM 839 0 0 0 0 0 0 0 16-3584
+chrM 840 0 0 0 0 0 0 0 16-3584
+chrM 841 0 0 0 0 0 0 0 16-3584
+chrM 842 0 0 0 0 0 0 0 16-3584
+chrM 843 0 0 0 0 0 0 0 16-3584
+chrM 844 0 0 0 0 0 0 0 16-3584
+chrM 845 0 0 0 0 0 0 0 16-3584
+chrM 846 0 0 0 0 0 0 0 16-3584
+chrM 847 0 0 0 0 0 0 0 16-3584
+chrM 848 0 0 0 0 0 0 0 16-3584
+chrM 849 0 0 0 0 0 0 0 16-3584
+chrM 850 0 0 0 0 0 0 0 16-3584
+chrM 851 0 0 0 0 0 0 0 16-3584
+chrM 852 0 0 0 0 0 0 0 16-3584
+chrM 853 0 0 0 0 0 0 0 16-3584
+chrM 854 0 0 0 0 0 0 0 16-3584
+chrM 855 0 0 0 0 0 0 0 16-3584
+chrM 856 0 0 0 0 0 0 0 16-3584
+chrM 857 0 0 0 0 0 0 0 16-3584
+chrM 858 0 0 0 0 0 0 0 16-3584
+chrM 859 0 0 0 0 0 0 0 16-3584
+chrM 860 0 0 0 0 0 0 0 16-3584
+chrM 861 0 0 0 0 0 0 0 16-3584
+chrM 862 0 0 0 0 0 0 0 16-3584
+chrM 863 0 0 0 0 0 0 0 16-3584
+chrM 864 0 0 0 0 0 0 0 16-3584
+chrM 865 0 0 0 0 0 0 0 16-3584
+chrM 866 0 0 0 0 0 0 0 16-3584
+chrM 867 0 0 0 0 0 0 0 16-3584
+chrM 868 0 0 0 0 0 0 0 16-3584
+chrM 869 0 0 0 0 0 0 0 16-3584
+chrM 870 0 0 0 0 0 0 0 16-3584
+chrM 871 0 0 0 0 0 0 0 16-3584
+chrM 872 0 0 0 0 0 0 0 16-3584
+chrM 873 0 0 0 0 0 0 0 16-3584
+chrM 874 0 0 0 0 0 0 0 16-3584
+chrM 875 0 0 0 0 0 0 0 16-3584
+chrM 876 0 0 0 0 0 0 0 16-3584
+chrM 877 0 0 0 0 0 0 0 16-3584
+chrM 878 0 0 0 0 0 0 0 16-3584
+chrM 879 0 0 0 0 0 0 0 16-3584
+chrM 880 0 0 0 0 0 0 0 16-3584
+chrM 881 0 0 0 0 0 0 0 16-3584
+chrM 882 0 0 0 0 0 0 0 16-3584
+chrM 883 0 0 0 0 0 0 0 16-3584
+chrM 884 0 0 0 0 0 0 0 16-3584
+chrM 885 0 0 0 0 0 0 0 16-3584
+chrM 886 0 0 0 0 0 0 0 16-3584
+chrM 887 0 0 0 0 0 0 0 16-3584
+chrM 888 0 0 0 0 0 0 0 16-3584
+chrM 889 0 0 0 0 0 0 0 16-3584
+chrM 890 0 0 0 0 0 0 0 16-3584
+chrM 891 0 0 0 0 0 0 0 16-3584
+chrM 892 0 0 0 0 0 0 0 16-3584
+chrM 893 0 0 0 0 0 0 0 16-3584
+chrM 894 0 0 0 0 0 0 0 16-3584
+chrM 895 0 0 0 0 0 0 0 16-3584
+chrM 896 0 0 0 0 0 0 0 16-3584
+chrM 897 0 0 0 0 0 0 0 16-3584
+chrM 898 0 0 0 0 0 0 0 16-3584
+chrM 899 0 0 0 0 0 0 0 16-3584
+chrM 900 0 0 0 0 0 0 0 16-3584
+chrM 901 0 0 0 0 0 0 0 16-3584
+chrM 902 0 0 0 0 0 0 0 16-3584
+chrM 903 0 0 0 0 0 0 0 16-3584
+chrM 904 0 0 0 0 0 0 0 16-3584
+chrM 905 0 0 0 0 0 0 0 16-3584
+chrM 906 0 0 0 0 0 0 0 16-3584
+chrM 907 0 0 0 0 0 0 0 16-3584
+chrM 908 0 0 0 0 0 0 0 16-3584
+chrM 909 0 0 0 0 0 0 0 16-3584
+chrM 910 0 0 0 0 0 0 0 16-3584
+chrM 911 0 0 0 0 0 0 0 16-3584
+chrM 912 0 0 0 0 0 0 0 16-3584
+chrM 913 0 0 0 0 0 0 0 16-3584
+chrM 914 0 0 0 0 0 0 0 16-3584
+chrM 915 0 0 0 0 0 0 0 16-3584
+chrM 916 0 0 0 0 0 0 0 16-3584
+chrM 917 0 0 0 0 0 0 0 16-3584
+chrM 918 0 0 0 0 0 0 0 16-3584
+chrM 919 0 0 0 0 0 0 0 16-3584
+chrM 920 0 0 0 0 0 0 0 16-3584
+chrM 921 0 0 0 0 0 0 0 16-3584
+chrM 922 0 0 0 0 0 0 0 16-3584
+chrM 923 0 0 0 0 0 0 0 16-3584
+chrM 924 0 0 0 0 0 0 0 16-3584
+chrM 925 0 0 0 0 0 0 0 16-3584
+chrM 926 0 0 0 0 0 0 0 16-3584
+chrM 927 0 0 0 0 0 0 0 16-3584
+chrM 928 0 0 0 0 0 0 0 16-3584
+chrM 929 0 0 0 0 0 0 0 16-3584
+chrM 930 0 0 0 0 0 0 0 16-3584
+chrM 931 0 0 0 0 0 0 0 16-3584
+chrM 932 0 0 0 0 0 0 0 16-3584
+chrM 933 0 0 0 0 0 0 0 16-3584
+chrM 934 0 0 0 0 0 0 0 16-3584
+chrM 935 0 0 0 0 0 0 0 16-3584
+chrM 936 0 0 0 0 0 0 0 16-3584
+chrM 937 0 0 0 0 0 0 0 16-3584
+chrM 938 0 0 0 0 0 0 0 16-3584
+chrM 939 0 0 0 0 0 0 0 16-3584
+chrM 940 0 0 0 0 0 0 0 16-3584
+chrM 941 0 0 0 0 0 0 0 16-3584
+chrM 942 0 0 0 0 0 0 0 16-3584
+chrM 943 0 0 0 0 0 0 0 16-3584
+chrM 944 0 0 0 0 0 0 0 16-3584
+chrM 945 0 0 0 0 0 0 0 16-3584
+chrM 946 0 0 0 0 0 0 0 16-3584
+chrM 947 0 0 0 0 0 0 0 16-3584
+chrM 948 0 0 0 0 0 0 0 16-3584
+chrM 949 0 0 0 0 0 0 0 16-3584
+chrM 950 0 0 0 0 0 0 0 16-3584
+chrM 951 0 0 0 0 0 0 0 16-3584
+chrM 952 0 0 0 0 0 0 0 16-3584
+chrM 953 0 0 0 0 0 0 0 16-3584
+chrM 954 0 0 0 0 0 0 0 16-3584
+chrM 955 0 0 0 0 0 0 0 16-3584
+chrM 956 0 0 0 0 0 0 0 16-3584
+chrM 957 0 0 0 0 0 0 0 16-3584
+chrM 958 0 0 0 0 0 0 0 16-3584
+chrM 959 0 0 0 0 0 0 0 16-3584
+chrM 960 0 0 0 0 0 0 0 16-3584
+chrM 961 0 0 0 0 0 0 0 16-3584
+chrM 962 0 0 0 0 0 0 0 16-3584
+chrM 963 0 0 0 0 0 0 0 16-3584
+chrM 964 0 0 0 0 0 0 0 16-3584
+chrM 965 0 0 0 0 0 0 0 16-3584
+chrM 966 0 0 0 0 0 0 0 16-3584
+chrM 967 0 0 0 0 0 0 0 16-3584
+chrM 968 0 0 0 0 0 0 0 16-3584
+chrM 969 0 0 0 0 0 0 0 16-3584
+chrM 970 0 0 0 0 0 0 0 16-3584
+chrM 971 0 0 0 0 0 0 0 16-3584
+chrM 972 0 0 0 0 0 0 0 16-3584
+chrM 973 0 0 0 0 0 0 0 16-3584
+chrM 974 0 0 0 0 0 0 0 16-3584
+chrM 975 0 0 0 0 0 0 0 16-3584
+chrM 976 0 0 0 0 0 0 0 16-3584
+chrM 977 0 0 0 0 0 0 0 16-3584
+chrM 978 0 0 0 0 0 0 0 16-3584
+chrM 979 0 0 0 0 0 0 0 16-3584
+chrM 980 0 0 0 0 0 0 0 16-3584
+chrM 981 0 0 0 0 0 0 0 16-3584
+chrM 982 0 0 0 0 0 0 0 16-3584
+chrM 983 0 0 0 0 0 0 0 16-3584
+chrM 984 0 0 0 0 0 0 0 16-3584
+chrM 985 0 0 0 0 0 0 0 16-3584
+chrM 986 0 0 0 0 0 0 0 16-3584
+chrM 987 0 0 0 0 0 0 0 16-3584
+chrM 988 0 0 0 0 0 0 0 16-3584
+chrM 989 0 0 0 0 0 0 0 16-3584
+chrM 990 0 0 0 0 0 0 0 16-3584
+chrM 991 0 0 0 0 0 0 0 16-3584
+chrM 992 0 0 0 0 0 0 0 16-3584
+chrM 993 0 0 0 0 0 0 0 16-3584
+chrM 994 0 0 0 0 0 0 0 16-3584
+chrM 995 0 0 0 0 0 0 0 16-3584
+chrM 996 0 0 0 0 0 0 0 16-3584
+chrM 997 0 0 0 0 0 0 0 16-3584
+chrM 998 0 0 0 0 0 0 0 16-3584
+chrM 999 0 0 0 0 0 0 0 16-3584
+chrM 1000 0 0 0 0 0 0 0 16-3584
+chrM 1001 0 0 0 0 0 0 0 16-3584
+chrM 1002 0 0 0 0 0 0 0 16-3584
+chrM 1003 0 0 0 0 0 0 0 16-3584
+chrM 1004 0 0 0 0 0 0 0 16-3584
+chrM 1005 0 0 0 0 0 0 0 16-3584
+chrM 1006 0 0 0 0 0 0 0 16-3584
+chrM 1007 0 0 0 0 0 0 0 16-3584
+chrM 1008 0 0 0 0 0 0 0 16-3584
+chrM 1009 0 0 0 0 0 0 0 16-3584
+chrM 1010 0 0 0 0 0 0 0 16-3584
+chrM 1011 0 0 0 0 0 0 0 16-3584
+chrM 1012 0 0 0 0 0 0 0 16-3584
+chrM 1013 0 0 0 0 0 0 0 16-3584
+chrM 1014 0 0 0 0 0 0 0 16-3584
+chrM 1015 0 0 0 0 0 0 0 16-3584
+chrM 1016 0 0 0 0 0 0 0 16-3584
+chrM 1017 0 0 0 0 0 0 0 16-3584
+chrM 1018 0 0 0 0 0 0 0 16-3584
+chrM 1019 0 0 0 0 0 0 0 16-3584
+chrM 1020 0 0 0 0 0 0 0 16-3584
+chrM 1021 0 0 0 0 0 0 0 16-3584
+chrM 1022 0 0 0 0 0 0 0 16-3584
+chrM 1023 0 0 0 0 0 0 0 16-3584
+chrM 1024 0 0 0 0 0 0 0 16-3584
+chrM 1025 0 0 0 0 0 0 0 16-3584
+chrM 1026 0 0 0 0 0 0 0 16-3584
+chrM 1027 0 0 0 0 0 0 0 16-3584
+chrM 1028 0 0 0 0 0 0 0 16-3584
+chrM 1029 0 0 0 0 0 0 0 16-3584
+chrM 1030 0 0 0 0 0 0 0 16-3584
+chrM 1031 0 0 0 0 0 0 0 16-3584
+chrM 1032 0 0 0 0 0 0 0 16-3584
+chrM 1033 0 0 0 0 0 0 0 16-3584
+chrM 1034 0 0 0 0 0 0 0 16-3584
+chrM 1035 0 0 0 0 0 0 0 16-3584
+chrM 1036 0 0 0 0 0 0 0 16-3584
+chrM 1037 0 0 0 0 0 0 0 16-3584
+chrM 1038 0 0 0 0 0 0 0 16-3584
+chrM 1039 0 0 0 0 0 0 0 16-3584
+chrM 1040 0 0 0 0 0 0 0 16-3584
+chrM 1041 0 0 0 0 0 0 0 16-3584
+chrM 1042 0 0 0 0 0 0 0 16-3584
+chrM 1043 0 0 0 0 0 0 0 16-3584
+chrM 1044 0 0 0 0 0 0 0 16-3584
+chrM 1045 0 0 0 0 0 0 0 16-3584
+chrM 1046 0 0 0 0 0 0 0 16-3584
+chrM 1047 0 0 0 0 0 0 0 16-3584
+chrM 1048 0 0 0 0 0 0 0 16-3584
+chrM 1049 0 0 0 0 0 0 0 16-3584
+chrM 1050 0 0 0 0 0 0 0 16-3584
+chrM 1051 0 0 0 0 0 0 0 16-3584
+chrM 1052 0 0 0 0 0 0 0 16-3584
+chrM 1053 0 0 0 0 0 0 0 16-3584
+chrM 1054 0 0 0 0 0 0 0 16-3584
+chrM 1055 0 0 0 0 0 0 0 16-3584
+chrM 1056 0 0 0 0 0 0 0 16-3584
+chrM 1057 0 0 0 0 0 0 0 16-3584
+chrM 1058 0 0 0 0 0 0 0 16-3584
+chrM 1059 0 0 0 0 0 0 0 16-3584
+chrM 1060 0 0 0 0 0 0 0 16-3584
+chrM 1061 0 0 0 0 0 0 0 16-3584
+chrM 1062 0 0 0 0 0 0 0 16-3584
+chrM 1063 0 0 0 0 0 0 0 16-3584
+chrM 1064 0 0 0 0 0 0 0 16-3584
+chrM 1065 0 0 0 0 0 0 0 16-3584
+chrM 1066 0 0 0 0 0 0 0 16-3584
+chrM 1067 0 0 0 0 0 0 0 16-3584
+chrM 1068 0 0 0 0 0 0 0 16-3584
+chrM 1069 0 0 0 0 0 0 0 16-3584
+chrM 1070 0 0 0 0 0 0 0 16-3584
+chrM 1071 0 0 0 0 0 0 0 16-3584
+chrM 1072 0 0 0 0 0 0 0 16-3584
+chrM 1073 0 0 0 0 0 0 0 16-3584
+chrM 1074 0 0 0 0 0 0 0 16-3584
+chrM 1075 0 0 0 0 0 0 0 16-3584
+chrM 1076 0 0 0 0 0 0 0 16-3584
+chrM 1077 0 0 0 0 0 0 0 16-3584
+chrM 1078 0 0 0 0 0 0 0 16-3584
+chrM 1079 0 0 0 0 0 0 0 16-3584
+chrM 1080 0 0 0 0 0 0 0 16-3584
+chrM 1081 0 0 0 0 0 0 0 16-3584
+chrM 1082 0 0 0 0 0 0 0 16-3584
+chrM 1083 0 0 0 0 0 0 0 16-3584
+chrM 1084 0 0 0 0 0 0 0 16-3584
+chrM 1085 0 0 0 0 0 0 0 16-3584
+chrM 1086 0 0 0 0 0 0 0 16-3584
+chrM 1087 0 0 0 0 0 0 0 16-3584
+chrM 1088 0 0 0 0 0 0 0 16-3584
+chrM 1089 0 0 0 0 0 0 0 16-3584
+chrM 1090 0 0 0 0 0 0 0 16-3584
+chrM 1091 0 0 0 0 0 0 0 16-3584
+chrM 1092 0 0 0 0 0 0 0 16-3584
+chrM 1093 0 0 0 0 0 0 0 16-3584
+chrM 1094 0 0 0 0 0 0 0 16-3584
+chrM 1095 0 0 0 0 0 0 0 16-3584
+chrM 1096 0 0 0 0 0 0 0 16-3584
+chrM 1097 0 0 0 0 0 0 0 16-3584
+chrM 1098 0 0 0 0 0 0 0 16-3584
+chrM 1099 0 0 0 0 0 0 0 16-3584
+chrM 1100 0 0 0 0 0 0 0 16-3584
+chrM 1101 0 0 0 0 0 0 0 16-3584
+chrM 1102 0 0 0 0 0 0 0 16-3584
+chrM 1103 0 0 0 0 0 0 0 16-3584
+chrM 1104 0 0 0 0 0 0 0 16-3584
+chrM 1105 0 0 0 0 0 0 0 16-3584
+chrM 1106 0 0 0 0 0 0 0 16-3584
+chrM 1107 0 0 0 0 0 0 0 16-3584
+chrM 1108 0 0 0 0 0 0 0 16-3584
+chrM 1109 0 0 0 0 0 0 0 16-3584
+chrM 1110 0 0 0 0 0 0 0 16-3584
+chrM 1111 0 0 0 0 0 0 0 16-3584
+chrM 1112 0 0 0 0 0 0 0 16-3584
+chrM 1113 0 0 0 0 0 0 0 16-3584
+chrM 1114 0 0 0 0 0 0 0 16-3584
+chrM 1115 0 0 0 0 0 0 0 16-3584
+chrM 1116 0 0 0 0 0 0 0 16-3584
+chrM 1117 0 0 0 0 0 0 0 16-3584
+chrM 1118 0 0 0 0 0 0 0 16-3584
+chrM 1119 0 0 0 0 0 0 0 16-3584
+chrM 1120 0 0 0 0 0 0 0 16-3584
+chrM 1121 0 0 0 0 0 0 0 16-3584
+chrM 1122 0 0 0 0 0 0 0 16-3584
+chrM 1123 0 0 0 0 0 0 0 16-3584
+chrM 1124 0 0 0 0 0 0 0 16-3584
+chrM 1125 0 0 0 0 0 0 0 16-3584
+chrM 1126 0 0 0 0 0 0 0 16-3584
+chrM 1127 0 0 0 0 0 0 0 16-3584
+chrM 1128 0 0 0 0 0 0 0 16-3584
+chrM 1129 0 0 0 0 0 0 0 16-3584
+chrM 1130 0 0 0 0 0 0 0 16-3584
+chrM 1131 0 0 0 0 0 0 0 16-3584
+chrM 1132 0 0 0 0 0 0 0 16-3584
+chrM 1133 0 0 0 0 0 0 0 16-3584
+chrM 1134 0 0 0 0 0 0 0 16-3584
+chrM 1135 0 0 0 0 0 0 0 16-3584
+chrM 1136 0 0 0 0 0 0 0 16-3584
+chrM 1137 0 0 0 0 0 0 0 16-3584
+chrM 1138 0 0 0 0 0 0 0 16-3584
+chrM 1139 0 0 0 0 0 0 0 16-3584
+chrM 1140 0 0 0 0 0 0 0 16-3584
+chrM 1141 0 0 0 0 0 0 0 16-3584
+chrM 1142 0 0 0 0 0 0 0 16-3584
+chrM 1143 0 0 0 0 0 0 0 16-3584
+chrM 1144 0 0 0 0 0 0 0 16-3584
+chrM 1145 0 0 0 0 0 0 0 16-3584
+chrM 1146 0 0 0 0 0 0 0 16-3584
+chrM 1147 0 0 0 0 0 0 0 16-3584
+chrM 1148 0 0 0 0 0 0 0 16-3584
+chrM 1149 0 0 0 0 0 0 0 16-3584
+chrM 1150 0 0 0 0 0 0 0 16-3584
+chrM 1151 0 0 0 0 0 0 0 16-3584
+chrM 1152 0 0 0 0 0 0 0 16-3584
+chrM 1153 0 0 0 0 0 0 0 16-3584
+chrM 1154 0 0 0 0 0 0 0 16-3584
+chrM 1155 0 0 0 0 0 0 0 16-3584
+chrM 1156 0 0 0 0 0 0 0 16-3584
+chrM 1157 0 0 0 0 0 0 0 16-3584
+chrM 1158 0 0 0 0 0 0 0 16-3584
+chrM 1159 0 0 0 0 0 0 0 16-3584
+chrM 1160 0 0 0 0 0 0 0 16-3584
+chrM 1161 0 0 0 0 0 0 0 16-3584
+chrM 1162 0 0 0 0 0 0 0 16-3584
+chrM 1163 0 0 0 0 0 0 0 16-3584
+chrM 1164 0 0 0 0 0 0 0 16-3584
+chrM 1165 0 0 0 0 0 0 0 16-3584
+chrM 1166 0 0 0 0 0 0 0 16-3584
+chrM 1167 0 0 0 0 0 0 0 16-3584
+chrM 1168 0 0 0 0 0 0 0 16-3584
+chrM 1169 0 0 0 0 0 0 0 16-3584
+chrM 1170 0 0 0 0 0 0 0 16-3584
+chrM 1171 0 0 0 0 0 0 0 16-3584
+chrM 1172 0 0 0 0 0 0 0 16-3584
+chrM 1173 0 0 0 0 0 0 0 16-3584
+chrM 1174 0 0 0 0 0 0 0 16-3584
+chrM 1175 0 0 0 0 0 0 0 16-3584
+chrM 1176 0 0 0 0 0 0 0 16-3584
+chrM 1177 0 0 0 0 0 0 0 16-3584
+chrM 1178 0 0 0 0 0 0 0 16-3584
+chrM 1179 0 0 0 0 0 0 0 16-3584
+chrM 1180 0 0 0 0 0 0 0 16-3584
+chrM 1181 0 0 0 0 0 0 0 16-3584
+chrM 1182 0 0 0 0 0 0 0 16-3584
+chrM 1183 0 0 0 0 0 0 0 16-3584
+chrM 1184 0 0 0 0 0 0 0 16-3584
+chrM 1185 0 0 0 0 0 0 0 16-3584
+chrM 1186 0 0 0 0 0 0 0 16-3584
+chrM 1187 0 0 0 0 0 0 0 16-3584
+chrM 1188 0 0 0 0 0 0 0 16-3584
+chrM 1189 0 0 0 0 0 0 0 16-3584
+chrM 1190 0 0 0 0 0 0 0 16-3584
+chrM 1191 0 0 0 0 0 0 0 16-3584
+chrM 1192 0 0 0 0 0 0 0 16-3584
+chrM 1193 0 0 0 0 0 0 0 16-3584
+chrM 1194 0 0 0 0 0 0 0 16-3584
+chrM 1195 0 0 0 0 0 0 0 16-3584
+chrM 1196 0 0 0 0 0 0 0 16-3584
+chrM 1197 0 0 0 0 0 0 0 16-3584
+chrM 1198 0 0 0 0 0 0 0 16-3584
+chrM 1199 0 0 0 0 0 0 0 16-3584
+chrM 1200 0 0 0 0 0 0 0 16-3584
+chrM 1201 0 0 0 0 0 0 0 16-3584
+chrM 1202 0 0 0 0 0 0 0 16-3584
+chrM 1203 0 0 0 0 0 0 0 16-3584
+chrM 1204 0 0 0 0 0 0 0 16-3584
+chrM 1205 0 0 0 0 0 0 0 16-3584
+chrM 1206 0 0 0 0 0 0 0 16-3584
+chrM 1207 0 0 0 0 0 0 0 16-3584
+chrM 1208 0 0 0 0 0 0 0 16-3584
+chrM 1209 0 0 0 0 0 0 0 16-3584
+chrM 1210 0 0 0 0 0 0 0 16-3584
+chrM 1211 0 0 0 0 0 0 0 16-3584
+chrM 1212 0 0 0 0 0 0 0 16-3584
+chrM 1213 0 0 0 0 0 0 0 16-3584
+chrM 1214 0 0 0 0 0 0 0 16-3584
+chrM 1215 0 0 0 0 0 0 0 16-3584
+chrM 1216 0 0 0 0 0 0 0 16-3584
+chrM 1217 0 0 0 0 0 0 0 16-3584
+chrM 1218 0 0 0 0 0 0 0 16-3584
+chrM 1219 0 0 0 0 0 0 0 16-3584
+chrM 1220 0 0 0 0 0 0 0 16-3584
+chrM 1221 0 0 0 0 0 0 0 16-3584
+chrM 1222 0 0 0 0 0 0 0 16-3584
+chrM 1223 0 0 0 0 0 0 0 16-3584
+chrM 1224 0 0 0 0 0 0 0 16-3584
+chrM 1225 0 0 0 0 0 0 0 16-3584
+chrM 1226 0 0 0 0 0 0 0 16-3584
+chrM 1227 0 0 0 0 0 0 0 16-3584
+chrM 1228 0 0 0 0 0 0 0 16-3584
+chrM 1229 0 0 0 0 0 0 0 16-3584
+chrM 1230 0 0 0 0 0 0 0 16-3584
+chrM 1231 0 0 0 0 0 0 0 16-3584
+chrM 1232 0 0 0 0 0 0 0 16-3584
+chrM 1233 0 0 0 0 0 0 0 16-3584
+chrM 1234 0 0 0 0 0 0 0 16-3584
+chrM 1235 0 0 0 0 0 0 0 16-3584
+chrM 1236 0 0 0 0 0 0 0 16-3584
+chrM 1237 0 0 0 0 0 0 0 16-3584
+chrM 1238 0 0 0 0 0 0 0 16-3584
+chrM 1239 0 0 0 0 0 0 0 16-3584
+chrM 1240 0 0 0 0 0 0 0 16-3584
+chrM 1241 0 0 0 0 0 0 0 16-3584
+chrM 1242 0 0 0 0 0 0 0 16-3584
+chrM 1243 0 0 0 0 0 0 0 16-3584
+chrM 1244 0 0 0 0 0 0 0 16-3584
+chrM 1245 0 0 0 0 0 0 0 16-3584
+chrM 1246 0 0 0 0 0 0 0 16-3584
+chrM 1247 0 0 0 0 0 0 0 16-3584
+chrM 1248 0 0 0 0 0 0 0 16-3584
+chrM 1249 0 0 0 0 0 0 0 16-3584
+chrM 1250 0 0 0 0 0 0 0 16-3584
+chrM 1251 0 0 0 0 0 0 0 16-3584
+chrM 1252 0 0 0 0 0 0 0 16-3584
+chrM 1253 0 0 0 0 0 0 0 16-3584
+chrM 1254 0 0 0 0 0 0 0 16-3584
+chrM 1255 0 0 0 0 0 0 0 16-3584
+chrM 1256 0 0 0 0 0 0 0 16-3584
+chrM 1257 0 0 0 0 0 0 0 16-3584
+chrM 1258 0 0 0 0 0 0 0 16-3584
+chrM 1259 0 0 0 0 0 0 0 16-3584
+chrM 1260 0 0 0 0 0 0 0 16-3584
+chrM 1261 0 0 0 0 0 0 0 16-3584
+chrM 1262 0 0 0 0 0 0 0 16-3584
+chrM 1263 0 0 0 0 0 0 0 16-3584
+chrM 1264 0 0 0 0 0 0 0 16-3584
+chrM 1265 0 0 0 0 0 0 0 16-3584
+chrM 1266 0 0 0 0 0 0 0 16-3584
+chrM 1267 0 0 0 0 0 0 0 16-3584
+chrM 1268 0 0 0 0 0 0 0 16-3584
+chrM 1269 0 0 0 0 0 0 0 16-3584
+chrM 1270 0 0 0 0 0 0 0 16-3584
+chrM 1271 0 0 0 0 0 0 0 16-3584
+chrM 1272 0 0 0 0 0 0 0 16-3584
+chrM 1273 0 0 0 0 0 0 0 16-3584
+chrM 1274 0 0 0 0 0 0 0 16-3584
+chrM 1275 0 0 0 0 0 0 0 16-3584
+chrM 1276 0 0 0 0 0 0 0 16-3584
+chrM 1277 0 0 0 0 0 0 0 16-3584
+chrM 1278 0 0 0 0 0 0 0 16-3584
+chrM 1279 0 0 0 0 0 0 0 16-3584
+chrM 1280 0 0 0 0 0 0 0 16-3584
+chrM 1281 0 0 0 0 0 0 0 16-3584
+chrM 1282 0 0 0 0 0 0 0 16-3584
+chrM 1283 0 0 0 0 0 0 0 16-3584
+chrM 1284 0 0 0 0 0 0 0 16-3584
+chrM 1285 0 0 0 0 0 0 0 16-3584
+chrM 1286 0 0 0 0 0 0 0 16-3584
+chrM 1287 0 0 0 0 0 0 0 16-3584
+chrM 1288 0 0 0 0 0 0 0 16-3584
+chrM 1289 0 0 0 0 0 0 0 16-3584
+chrM 1290 0 0 0 0 0 0 0 16-3584
+chrM 1291 0 0 0 0 0 0 0 16-3584
+chrM 1292 0 0 0 0 0 0 0 16-3584
+chrM 1293 0 0 0 0 0 0 0 16-3584
+chrM 1294 0 0 0 0 0 0 0 16-3584
+chrM 1295 0 0 0 0 0 0 0 16-3584
+chrM 1296 0 0 0 0 0 0 0 16-3584
+chrM 1297 0 0 0 0 0 0 0 16-3584
+chrM 1298 0 0 0 0 0 0 0 16-3584
+chrM 1299 0 0 0 0 0 0 0 16-3584
+chrM 1300 0 0 0 0 0 0 0 16-3584
+chrM 1301 0 0 0 0 0 0 0 16-3584
+chrM 1302 0 0 0 0 0 0 0 16-3584
+chrM 1303 0 0 0 0 0 0 0 16-3584
+chrM 1304 0 0 0 0 0 0 0 16-3584
+chrM 1305 0 0 0 0 0 0 0 16-3584
+chrM 1306 0 0 0 0 0 0 0 16-3584
+chrM 1307 0 0 0 0 0 0 0 16-3584
+chrM 1308 0 0 0 0 0 0 0 16-3584
+chrM 1309 0 0 0 0 0 0 0 16-3584
+chrM 1310 0 0 0 0 0 0 0 16-3584
+chrM 1311 0 0 0 0 0 0 0 16-3584
+chrM 1312 0 0 0 0 0 0 0 16-3584
+chrM 1313 0 0 0 0 0 0 0 16-3584
+chrM 1314 0 0 0 0 0 0 0 16-3584
+chrM 1315 0 0 0 0 0 0 0 16-3584
+chrM 1316 0 0 0 0 0 0 0 16-3584
+chrM 1317 0 0 0 0 0 0 0 16-3584
+chrM 1318 0 0 0 0 0 0 0 16-3584
+chrM 1319 0 0 0 0 0 0 0 16-3584
+chrM 1320 0 0 0 0 0 0 0 16-3584
+chrM 1321 0 0 0 0 0 0 0 16-3584
+chrM 1322 0 0 0 0 0 0 0 16-3584
+chrM 1323 0 0 0 0 0 0 0 16-3584
+chrM 1324 0 0 0 0 0 0 0 16-3584
+chrM 1325 0 0 0 0 0 0 0 16-3584
+chrM 1326 0 0 0 0 0 0 0 16-3584
+chrM 1327 0 0 0 0 0 0 0 16-3584
+chrM 1328 0 0 0 0 0 0 0 16-3584
+chrM 1329 0 0 0 0 0 0 0 16-3584
+chrM 1330 0 0 0 0 0 0 0 16-3584
+chrM 1331 0 0 0 0 0 0 0 16-3584
+chrM 1332 0 0 0 0 0 0 0 16-3584
+chrM 1333 0 0 0 0 0 0 0 16-3584
+chrM 1334 0 0 0 0 0 0 0 16-3584
+chrM 1335 0 0 0 0 0 0 0 16-3584
+chrM 1336 0 0 0 0 0 0 0 16-3584
+chrM 1337 0 0 0 0 0 0 0 16-3584
+chrM 1338 0 0 0 0 0 0 0 16-3584
+chrM 1339 0 0 0 0 0 0 0 16-3584
+chrM 1340 0 0 0 0 0 0 0 16-3584
+chrM 1341 0 0 0 0 0 0 0 16-3584
+chrM 1342 0 0 0 0 0 0 0 16-3584
+chrM 1343 0 0 0 0 0 0 0 16-3584
+chrM 1344 0 0 0 0 0 0 0 16-3584
+chrM 1345 0 0 0 0 0 0 0 16-3584
+chrM 1346 0 0 0 0 0 0 0 16-3584
+chrM 1347 0 0 0 0 0 0 0 16-3584
+chrM 1348 0 0 0 0 0 0 0 16-3584
+chrM 1349 0 0 0 0 0 0 0 16-3584
+chrM 1350 0 0 0 0 0 0 0 16-3584
+chrM 1351 0 0 0 0 0 0 0 16-3584
+chrM 1352 0 0 0 0 0 0 0 16-3584
+chrM 1353 0 0 0 0 0 0 0 16-3584
+chrM 1354 0 0 0 0 0 0 0 16-3584
+chrM 1355 0 0 0 0 0 0 0 16-3584
+chrM 1356 0 0 0 0 0 0 0 16-3584
+chrM 1357 0 0 0 0 0 0 0 16-3584
+chrM 1358 0 0 0 0 0 0 0 16-3584
+chrM 1359 0 0 0 0 0 0 0 16-3584
+chrM 1360 0 0 0 0 0 0 0 16-3584
+chrM 1361 0 0 0 0 0 0 0 16-3584
+chrM 1362 0 0 0 0 0 0 0 16-3584
+chrM 1363 0 0 0 0 0 0 0 16-3584
+chrM 1364 0 0 0 0 0 0 0 16-3584
+chrM 1365 0 0 0 0 0 0 0 16-3584
+chrM 1366 0 0 0 0 0 0 0 16-3584
+chrM 1367 0 0 0 0 0 0 0 16-3584
+chrM 1368 0 0 0 0 0 0 0 16-3584
+chrM 1369 0 0 0 0 0 0 0 16-3584
+chrM 1370 0 0 0 0 0 0 0 16-3584
+chrM 1371 0 0 0 0 0 0 0 16-3584
+chrM 1372 0 0 0 0 0 0 0 16-3584
+chrM 1373 0 0 0 0 0 0 0 16-3584
+chrM 1374 0 0 0 0 0 0 0 16-3584
+chrM 1375 0 0 0 0 0 0 0 16-3584
+chrM 1376 0 0 0 0 0 0 0 16-3584
+chrM 1377 0 0 0 0 0 0 0 16-3584
+chrM 1378 0 0 0 0 0 0 0 16-3584
+chrM 1379 0 0 0 0 0 0 0 16-3584
+chrM 1380 0 0 0 0 0 0 0 16-3584
+chrM 1381 0 0 0 0 0 0 0 16-3584
+chrM 1382 0 0 0 0 0 0 0 16-3584
+chrM 1383 0 0 0 0 0 0 0 16-3584
+chrM 1384 0 0 0 0 0 0 0 16-3584
+chrM 1385 0 0 0 0 0 0 0 16-3584
+chrM 1386 0 0 0 0 0 0 0 16-3584
+chrM 1387 0 0 0 0 0 0 0 16-3584
+chrM 1388 0 0 0 0 0 0 0 16-3584
+chrM 1389 0 0 0 0 0 0 0 16-3584
+chrM 1390 0 0 0 0 0 0 0 16-3584
+chrM 1391 0 0 0 0 0 0 0 16-3584
+chrM 1392 0 0 0 0 0 0 0 16-3584
+chrM 1393 0 0 0 0 0 0 0 16-3584
+chrM 1394 0 0 0 0 0 0 0 16-3584
+chrM 1395 0 0 0 0 0 0 0 16-3584
+chrM 1396 0 0 0 0 0 0 0 16-3584
+chrM 1397 0 0 0 0 0 0 0 16-3584
+chrM 1398 0 0 0 0 0 0 0 16-3584
+chrM 1399 0 0 0 0 0 0 0 16-3584
+chrM 1400 0 0 0 0 0 0 0 16-3584
+chrM 1401 0 0 0 0 0 0 0 16-3584
+chrM 1402 0 0 0 0 0 0 0 16-3584
+chrM 1403 0 0 0 0 0 0 0 16-3584
+chrM 1404 0 0 0 0 0 0 0 16-3584
+chrM 1405 0 0 0 0 0 0 0 16-3584
+chrM 1406 0 0 0 0 0 0 0 16-3584
+chrM 1407 0 0 0 0 0 0 0 16-3584
+chrM 1408 0 0 0 0 0 0 0 16-3584
+chrM 1409 0 0 0 0 0 0 0 16-3584
+chrM 1410 0 0 0 0 0 0 0 16-3584
+chrM 1411 0 0 0 0 0 0 0 16-3584
+chrM 1412 0 0 0 0 0 0 0 16-3584
+chrM 1413 0 0 0 0 0 0 0 16-3584
+chrM 1414 0 0 0 0 0 0 0 16-3584
+chrM 1415 0 0 0 0 0 0 0 16-3584
+chrM 1416 0 0 0 0 0 0 0 16-3584
+chrM 1417 0 0 0 0 0 0 0 16-3584
+chrM 1418 0 0 0 0 0 0 0 16-3584
+chrM 1419 0 0 0 0 0 0 0 16-3584
+chrM 1420 0 0 0 0 0 0 0 16-3584
+chrM 1421 0 0 0 0 0 0 0 16-3584
+chrM 1422 0 0 0 0 0 0 0 16-3584
+chrM 1423 0 0 0 0 0 0 0 16-3584
+chrM 1424 0 0 0 0 0 0 0 16-3584
+chrM 1425 0 0 0 0 0 0 0 16-3584
+chrM 1426 0 0 0 0 0 0 0 16-3584
+chrM 1427 0 0 0 0 0 0 0 16-3584
+chrM 1428 0 0 0 0 0 0 0 16-3584
+chrM 1429 0 0 0 0 0 0 0 16-3584
+chrM 1430 0 0 0 0 0 0 0 16-3584
+chrM 1431 0 0 0 0 0 0 0 16-3584
+chrM 1432 0 0 0 0 0 0 0 16-3584
+chrM 1433 0 0 0 0 0 0 0 16-3584
+chrM 1434 0 0 0 0 0 0 0 16-3584
+chrM 1435 0 0 0 0 0 0 0 16-3584
+chrM 1436 0 0 0 0 0 0 0 16-3584
+chrM 1437 0 0 0 0 0 0 0 16-3584
+chrM 1438 0 0 0 0 0 0 0 16-3584
+chrM 1439 0 0 0 0 0 0 0 16-3584
+chrM 1440 0 0 0 0 0 0 0 16-3584
+chrM 1441 0 0 0 0 0 0 0 16-3584
+chrM 1442 0 0 0 0 0 0 0 16-3584
+chrM 1443 0 0 0 0 0 0 0 16-3584
+chrM 1444 0 0 0 0 0 0 0 16-3584
+chrM 1445 0 0 0 0 0 0 0 16-3584
+chrM 1446 0 0 0 0 0 0 0 16-3584
+chrM 1447 0 0 0 0 0 0 0 16-3584
+chrM 1448 0 0 0 0 0 0 0 16-3584
+chrM 1449 0 0 0 0 0 0 0 16-3584
+chrM 1450 0 0 0 0 0 0 0 16-3584
+chrM 1451 0 0 0 0 0 0 0 16-3584
+chrM 1452 0 0 0 0 0 0 0 16-3584
+chrM 1453 0 0 0 0 0 0 0 16-3584
+chrM 1454 0 0 0 0 0 0 0 16-3584
+chrM 1455 0 0 0 0 0 0 0 16-3584
+chrM 1456 0 0 0 0 0 0 0 16-3584
+chrM 1457 0 0 0 0 0 0 0 16-3584
+chrM 1458 0 0 0 0 0 0 0 16-3584
+chrM 1459 0 0 0 0 0 0 0 16-3584
+chrM 1460 0 0 0 0 0 0 0 16-3584
+chrM 1461 0 0 0 0 0 0 0 16-3584
+chrM 1462 0 0 0 0 0 0 0 16-3584
+chrM 1463 0 0 0 0 0 0 0 16-3584
+chrM 1464 0 0 0 0 0 0 0 16-3584
+chrM 1465 0 0 0 0 0 0 0 16-3584
+chrM 1466 0 0 0 0 0 0 0 16-3584
+chrM 1467 0 0 0 0 0 0 0 16-3584
+chrM 1468 0 0 0 0 0 0 0 16-3584
+chrM 1469 0 0 0 0 0 0 0 16-3584
+chrM 1470 0 0 0 0 0 0 0 16-3584
+chrM 1471 0 0 0 0 0 0 0 16-3584
+chrM 1472 0 0 0 0 0 0 0 16-3584
+chrM 1473 0 0 0 0 0 0 0 16-3584
+chrM 1474 0 0 0 0 0 0 0 16-3584
+chrM 1475 0 0 0 0 0 0 0 16-3584
+chrM 1476 0 0 0 0 0 0 0 16-3584
+chrM 1477 0 0 0 0 0 0 0 16-3584
+chrM 1478 0 0 0 0 0 0 0 16-3584
+chrM 1479 0 0 0 0 0 0 0 16-3584
+chrM 1480 0 0 0 0 0 0 0 16-3584
+chrM 1481 0 0 0 0 0 0 0 16-3584
+chrM 1482 0 0 0 0 0 0 0 16-3584
+chrM 1483 0 0 0 0 0 0 0 16-3584
+chrM 1484 0 0 0 0 0 0 0 16-3584
+chrM 1485 0 0 0 0 0 0 0 16-3584
+chrM 1486 0 0 0 0 0 0 0 16-3584
+chrM 1487 0 0 0 0 0 0 0 16-3584
+chrM 1488 0 0 0 0 0 0 0 16-3584
+chrM 1489 0 0 0 0 0 0 0 16-3584
+chrM 1490 0 0 0 0 0 0 0 16-3584
+chrM 1491 0 0 0 0 0 0 0 16-3584
+chrM 1492 0 0 0 0 0 0 0 16-3584
+chrM 1493 0 0 0 0 0 0 0 16-3584
+chrM 1494 0 0 0 0 0 0 0 16-3584
+chrM 1495 0 0 0 0 0 0 0 16-3584
+chrM 1496 0 0 0 0 0 0 0 16-3584
+chrM 1497 0 0 0 0 0 0 0 16-3584
+chrM 1498 0 0 0 0 0 0 0 16-3584
+chrM 1499 0 0 0 0 0 0 0 16-3584
+chrM 1500 0 0 0 0 0 0 0 16-3584
+chrM 1501 0 0 0 0 0 0 0 16-3584
+chrM 1502 0 0 0 0 0 0 0 16-3584
+chrM 1503 0 0 0 0 0 0 0 16-3584
+chrM 1504 0 0 0 0 0 0 0 16-3584
+chrM 1505 0 0 0 0 0 0 0 16-3584
+chrM 1506 0 0 0 0 0 0 0 16-3584
+chrM 1507 0 0 0 0 0 0 0 16-3584
+chrM 1508 0 0 0 0 0 0 0 16-3584
+chrM 1509 0 0 0 0 0 0 0 16-3584
+chrM 1510 0 0 0 0 0 0 0 16-3584
+chrM 1511 0 0 0 0 0 0 0 16-3584
+chrM 1512 0 0 0 0 0 0 0 16-3584
+chrM 1513 0 0 0 0 0 0 0 16-3584
+chrM 1514 0 0 0 0 0 0 0 16-3584
+chrM 1515 0 0 0 0 0 0 0 16-3584
+chrM 1516 0 0 0 0 0 0 0 16-3584
+chrM 1517 0 0 0 0 0 0 0 16-3584
+chrM 1518 0 0 0 0 0 0 0 16-3584
+chrM 1519 0 0 0 0 0 0 0 16-3584
+chrM 1520 0 0 0 0 0 0 0 16-3584
+chrM 1521 0 0 0 0 0 0 0 16-3584
+chrM 1522 0 0 0 0 0 0 0 16-3584
+chrM 1523 0 0 0 0 0 0 0 16-3584
+chrM 1524 0 0 0 0 0 0 0 16-3584
+chrM 1525 0 0 0 0 0 0 0 16-3584
+chrM 1526 0 0 0 0 0 0 0 16-3584
+chrM 1527 0 0 0 0 0 0 0 16-3584
+chrM 1528 0 0 0 0 0 0 0 16-3584
+chrM 1529 0 0 0 0 0 0 0 16-3584
+chrM 1530 0 0 0 0 0 0 0 16-3584
+chrM 1531 0 0 0 0 0 0 0 16-3584
+chrM 1532 0 0 0 0 0 0 0 16-3584
+chrM 1533 0 0 0 0 0 0 0 16-3584
+chrM 1534 0 0 0 0 0 0 0 16-3584
+chrM 1535 0 0 0 0 0 0 0 16-3584
+chrM 1536 0 0 0 0 0 0 0 16-3584
+chrM 1537 0 0 0 0 0 0 0 16-3584
+chrM 1538 0 0 0 0 0 0 0 16-3584
+chrM 1539 0 0 0 0 0 0 0 16-3584
+chrM 1540 0 0 0 0 0 0 0 16-3584
+chrM 1541 0 0 0 0 0 0 0 16-3584
+chrM 1542 0 0 0 0 0 0 0 16-3584
+chrM 1543 0 0 0 0 0 0 0 16-3584
+chrM 1544 0 0 0 0 0 0 0 16-3584
+chrM 1545 0 0 0 0 0 0 0 16-3584
+chrM 1546 0 0 0 0 0 0 0 16-3584
+chrM 1547 0 0 0 0 0 0 0 16-3584
+chrM 1548 0 0 0 0 0 0 0 16-3584
+chrM 1549 0 0 0 0 0 0 0 16-3584
+chrM 1550 0 0 0 0 0 0 0 16-3584
+chrM 1551 0 0 0 0 0 0 0 16-3584
+chrM 1552 0 0 0 0 0 0 0 16-3584
+chrM 1553 0 0 0 0 0 0 0 16-3584
+chrM 1554 0 0 0 0 0 0 0 16-3584
+chrM 1555 0 0 0 0 0 0 0 16-3584
+chrM 1556 0 0 0 0 0 0 0 16-3584
+chrM 1557 0 0 0 0 0 0 0 16-3584
+chrM 1558 0 0 0 0 0 0 0 16-3584
+chrM 1559 0 0 0 0 0 0 0 16-3584
+chrM 1560 0 0 0 0 0 0 0 16-3584
+chrM 1561 0 0 0 0 0 0 0 16-3584
+chrM 1562 0 0 0 0 0 0 0 16-3584
+chrM 1563 0 0 0 0 0 0 0 16-3584
+chrM 1564 0 0 0 0 0 0 0 16-3584
+chrM 1565 0 0 0 0 0 0 0 16-3584
+chrM 1566 0 0 0 0 0 0 0 16-3584
+chrM 1567 0 0 0 0 0 0 0 16-3584
+chrM 1568 0 0 0 0 0 0 0 16-3584
+chrM 1569 0 0 0 0 0 0 0 16-3584
+chrM 1570 0 0 0 0 0 0 0 16-3584
+chrM 1571 0 0 0 0 0 0 0 16-3584
+chrM 1572 0 0 0 0 0 0 0 16-3584
+chrM 1573 0 0 0 0 0 0 0 16-3584
+chrM 1574 0 0 0 0 0 0 0 16-3584
+chrM 1575 0 0 0 0 0 0 0 16-3584
+chrM 1576 0 0 0 0 0 0 0 16-3584
+chrM 1577 0 0 0 0 0 0 0 16-3584
+chrM 1578 0 0 0 0 0 0 0 16-3584
+chrM 1579 0 0 0 0 0 0 0 16-3584
+chrM 1580 0 0 0 0 0 0 0 16-3584
+chrM 1581 0 0 0 0 0 0 0 16-3584
+chrM 1582 0 0 0 0 0 0 0 16-3584
+chrM 1583 0 0 0 0 0 0 0 16-3584
+chrM 1584 0 0 0 0 0 0 0 16-3584
+chrM 1585 0 0 0 0 0 0 0 16-3584
+chrM 1586 0 0 0 0 0 0 0 16-3584
+chrM 1587 0 0 0 0 0 0 0 16-3584
+chrM 1588 0 0 0 0 0 0 0 16-3584
+chrM 1589 0 0 0 0 0 0 0 16-3584
+chrM 1590 0 0 0 0 0 0 0 16-3584
+chrM 1591 0 0 0 0 0 0 0 16-3584
+chrM 1592 0 0 0 0 0 0 0 16-3584
+chrM 1593 0 0 0 0 0 0 0 16-3584
+chrM 1594 0 0 0 0 0 0 0 16-3584
+chrM 1595 0 0 0 0 0 0 0 16-3584
+chrM 1596 0 0 0 0 0 0 0 16-3584
+chrM 1597 0 0 0 0 0 0 0 16-3584
+chrM 1598 0 0 0 0 0 0 0 16-3584
+chrM 1599 0 0 0 0 0 0 0 16-3584
+chrM 1600 0 0 0 0 0 0 0 16-3584
+chrM 1601 0 0 0 0 0 0 0 16-3584
+chrM 1602 0 0 0 0 0 0 0 16-3584
+chrM 1603 0 0 0 0 0 0 0 16-3584
+chrM 1604 0 0 0 0 0 0 0 16-3584
+chrM 1605 0 0 0 0 0 0 0 16-3584
+chrM 1606 0 0 0 0 0 0 0 16-3584
+chrM 1607 0 0 0 0 0 0 0 16-3584
+chrM 1608 0 0 0 0 0 0 0 16-3584
+chrM 1609 0 0 0 0 0 0 0 16-3584
+chrM 1610 0 0 0 0 0 0 0 16-3584
+chrM 1611 0 0 0 0 0 0 0 16-3584
+chrM 1612 0 0 0 0 0 0 0 16-3584
+chrM 1613 0 0 0 0 0 0 0 16-3584
+chrM 1614 0 0 0 0 0 0 0 16-3584
+chrM 1615 0 0 0 0 0 0 0 16-3584
+chrM 1616 0 0 0 0 0 0 0 16-3584
+chrM 1617 0 0 0 0 0 0 0 16-3584
+chrM 1618 0 0 0 0 0 0 0 16-3584
+chrM 1619 0 0 0 0 0 0 0 16-3584
+chrM 1620 0 0 0 0 0 0 0 16-3584
+chrM 1621 0 0 0 0 0 0 0 16-3584
+chrM 1622 0 0 0 0 0 0 0 16-3584
+chrM 1623 0 0 0 0 0 0 0 16-3584
+chrM 1624 0 0 0 0 0 0 0 16-3584
+chrM 1625 0 0 0 0 0 0 0 16-3584
+chrM 1626 0 0 0 0 0 0 0 16-3584
+chrM 1627 0 0 0 0 0 0 0 16-3584
+chrM 1628 0 0 0 0 0 0 0 16-3584
+chrM 1629 0 0 0 0 0 0 0 16-3584
+chrM 1630 0 0 0 0 0 0 0 16-3584
+chrM 1631 0 0 0 0 0 0 0 16-3584
+chrM 1632 0 0 0 0 0 0 0 16-3584
+chrM 1633 0 0 0 0 0 0 0 16-3584
+chrM 1634 0 0 0 0 0 0 0 16-3584
+chrM 1635 0 0 0 0 0 0 0 16-3584
+chrM 1636 0 0 0 0 0 0 0 16-3584
+chrM 1637 0 0 0 0 0 0 0 16-3584
+chrM 1638 0 0 0 0 0 0 0 16-3584
+chrM 1639 0 0 0 0 0 0 0 16-3584
+chrM 1640 0 0 0 0 0 0 0 16-3584
+chrM 1641 0 0 0 0 0 0 0 16-3584
+chrM 1642 0 0 0 0 0 0 0 16-3584
+chrM 1643 0 0 0 0 0 0 0 16-3584
+chrM 1644 0 0 0 0 0 0 0 16-3584
+chrM 1645 0 0 0 0 0 0 0 16-3584
+chrM 1646 0 0 0 0 0 0 0 16-3584
+chrM 1647 0 0 0 0 0 0 0 16-3584
+chrM 1648 0 0 0 0 0 0 0 16-3584
+chrM 1649 0 0 0 0 0 0 0 16-3584
+chrM 1650 0 0 0 0 0 0 0 16-3584
+chrM 1651 0 0 0 0 0 0 0 16-3584
+chrM 1652 0 0 0 0 0 0 0 16-3584
+chrM 1653 0 0 0 0 0 0 0 16-3584
+chrM 1654 0 0 0 0 0 0 0 16-3584
+chrM 1655 0 0 0 0 0 0 0 16-3584
+chrM 1656 0 0 0 0 0 0 0 16-3584
+chrM 1657 0 0 0 0 0 0 0 16-3584
+chrM 1658 0 0 0 0 0 0 0 16-3584
+chrM 1659 0 0 0 0 0 0 0 16-3584
+chrM 1660 0 0 0 0 0 0 0 16-3584
+chrM 1661 0 0 0 0 0 0 0 16-3584
+chrM 1662 0 0 0 0 0 0 0 16-3584
+chrM 1663 0 0 0 0 0 0 0 16-3584
+chrM 1664 0 0 0 0 0 0 0 16-3584
+chrM 1665 0 0 0 0 0 0 0 16-3584
+chrM 1666 0 0 0 0 0 0 0 16-3584
+chrM 1667 0 0 0 0 0 0 0 16-3584
+chrM 1668 0 0 0 0 0 0 0 16-3584
+chrM 1669 0 0 0 0 0 0 0 16-3584
+chrM 1670 0 0 0 0 0 0 0 16-3584
+chrM 1671 0 0 0 0 0 0 0 16-3584
+chrM 1672 0 0 0 0 0 0 0 16-3584
+chrM 1673 0 0 0 0 0 0 0 16-3584
+chrM 1674 0 0 0 0 0 0 0 16-3584
+chrM 1675 0 0 0 0 0 0 0 16-3584
+chrM 1676 0 0 0 0 0 0 0 16-3584
+chrM 1677 0 0 0 0 0 0 0 16-3584
+chrM 1678 0 0 0 0 0 0 0 16-3584
+chrM 1679 0 0 0 0 0 0 0 16-3584
+chrM 1680 0 0 0 0 0 0 0 16-3584
+chrM 1681 0 0 0 0 0 0 0 16-3584
+chrM 1682 0 0 0 0 0 0 0 16-3584
+chrM 1683 0 0 0 0 0 0 0 16-3584
+chrM 1684 0 0 0 0 0 0 0 16-3584
+chrM 1685 0 0 0 0 0 0 0 16-3584
+chrM 1686 0 0 0 0 0 0 0 16-3584
+chrM 1687 0 0 0 0 0 0 0 16-3584
+chrM 1688 0 0 0 0 0 0 0 16-3584
+chrM 1689 0 0 0 0 0 0 0 16-3584
+chrM 1690 0 0 0 0 0 0 0 16-3584
+chrM 1691 0 0 0 0 0 0 0 16-3584
+chrM 1692 0 0 0 0 0 0 0 16-3584
+chrM 1693 0 0 0 0 0 0 0 16-3584
+chrM 1694 0 0 0 0 0 0 0 16-3584
+chrM 1695 0 0 0 0 0 0 0 16-3584
+chrM 1696 0 0 0 0 0 0 0 16-3584
+chrM 1697 0 0 0 0 0 0 0 16-3584
+chrM 1698 0 0 0 0 0 0 0 16-3584
+chrM 1699 0 0 0 0 0 0 0 16-3584
+chrM 1700 0 0 0 0 0 0 0 16-3584
+chrM 1701 0 0 0 0 0 0 0 16-3584
+chrM 1702 0 0 0 0 0 0 0 16-3584
+chrM 1703 0 0 0 0 0 0 0 16-3584
+chrM 1704 0 0 0 0 0 0 0 16-3584
+chrM 1705 0 0 0 0 0 0 0 16-3584
+chrM 1706 0 0 0 0 0 0 0 16-3584
+chrM 1707 0 0 0 0 0 0 0 16-3584
+chrM 1708 0 0 0 0 0 0 0 16-3584
+chrM 1709 0 0 0 0 0 0 0 16-3584
+chrM 1710 0 0 0 0 0 0 0 16-3584
+chrM 1711 0 0 0 0 0 0 0 16-3584
+chrM 1712 0 0 0 0 0 0 0 16-3584
+chrM 1713 0 0 0 0 0 0 0 16-3584
+chrM 1714 0 0 0 0 0 0 0 16-3584
+chrM 1715 0 0 0 0 0 0 0 16-3584
+chrM 1716 0 0 0 0 0 0 0 16-3584
+chrM 1717 0 0 0 0 0 0 0 16-3584
+chrM 1718 0 0 0 0 0 0 0 16-3584
+chrM 1719 0 0 0 0 0 0 0 16-3584
+chrM 1720 0 0 0 0 0 0 0 16-3584
+chrM 1721 0 0 0 0 0 0 0 16-3584
+chrM 1722 0 0 0 0 0 0 0 16-3584
+chrM 1723 0 0 0 0 0 0 0 16-3584
+chrM 1724 0 0 0 0 0 0 0 16-3584
+chrM 1725 0 0 0 0 0 0 0 16-3584
+chrM 1726 0 0 0 0 0 0 0 16-3584
+chrM 1727 0 0 0 0 0 0 0 16-3584
+chrM 1728 0 0 0 0 0 0 0 16-3584
+chrM 1729 0 0 0 0 0 0 0 16-3584
+chrM 1730 0 0 0 0 0 0 0 16-3584
+chrM 1731 0 0 0 0 0 0 0 16-3584
+chrM 1732 0 0 0 0 0 0 0 16-3584
+chrM 1733 0 0 0 0 0 0 0 16-3584
+chrM 1734 0 0 0 0 0 0 0 16-3584
+chrM 1735 0 0 0 0 0 0 0 16-3584
+chrM 1736 0 0 0 0 0 0 0 16-3584
+chrM 1737 0 0 0 0 0 0 0 16-3584
+chrM 1738 0 0 0 0 0 0 0 16-3584
+chrM 1739 0 0 0 0 0 0 0 16-3584
+chrM 1740 0 0 0 0 0 0 0 16-3584
+chrM 1741 0 0 0 0 0 0 0 16-3584
+chrM 1742 0 0 0 0 0 0 0 16-3584
+chrM 1743 0 0 0 0 0 0 0 16-3584
+chrM 1744 0 0 0 0 0 0 0 16-3584
+chrM 1745 0 0 0 0 0 0 0 16-3584
+chrM 1746 0 0 0 0 0 0 0 16-3584
+chrM 1747 0 0 0 0 0 0 0 16-3584
+chrM 1748 0 0 0 0 0 0 0 16-3584
+chrM 1749 0 0 0 0 0 0 0 16-3584
+chrM 1750 0 0 0 0 0 0 0 16-3584
+chrM 1751 0 0 0 0 0 0 0 16-3584
+chrM 1752 0 0 0 0 0 0 0 16-3584
+chrM 1753 0 0 0 0 0 0 0 16-3584
+chrM 1754 0 0 0 0 0 0 0 16-3584
+chrM 1755 0 0 0 0 0 0 0 16-3584
+chrM 1756 0 0 0 0 0 0 0 16-3584
+chrM 1757 0 0 0 0 0 0 0 16-3584
+chrM 1758 0 0 0 0 0 0 0 16-3584
+chrM 1759 0 0 0 0 0 0 0 16-3584
+chrM 1760 0 0 0 0 0 0 0 16-3584
+chrM 1761 0 0 0 0 0 0 0 16-3584
+chrM 1762 0 0 0 0 0 0 0 16-3584
+chrM 1763 0 0 0 0 0 0 0 16-3584
+chrM 1764 0 0 0 0 0 0 0 16-3584
+chrM 1765 0 0 0 0 0 0 0 16-3584
+chrM 1766 0 0 0 0 0 0 0 16-3584
+chrM 1767 0 0 0 0 0 0 0 16-3584
+chrM 1768 0 0 0 0 0 0 0 16-3584
+chrM 1769 0 0 0 0 0 0 0 16-3584
+chrM 1770 0 0 0 0 0 0 0 16-3584
+chrM 1771 0 0 0 0 0 0 0 16-3584
+chrM 1772 0 0 0 0 0 0 0 16-3584
+chrM 1773 0 0 0 0 0 0 0 16-3584
+chrM 1774 0 0 0 0 0 0 0 16-3584
+chrM 1775 0 0 0 0 0 0 0 16-3584
+chrM 1776 0 0 0 0 0 0 0 16-3584
+chrM 1777 0 0 0 0 0 0 0 16-3584
+chrM 1778 0 0 0 0 0 0 0 16-3584
+chrM 1779 0 0 0 0 0 0 0 16-3584
+chrM 1780 0 0 0 0 0 0 0 16-3584
+chrM 1781 0 0 0 0 0 0 0 16-3584
+chrM 1782 0 0 0 0 0 0 0 16-3584
+chrM 1783 0 0 0 0 0 0 0 16-3584
+chrM 1784 0 0 0 0 0 0 0 16-3584
+chrM 1785 0 0 0 0 0 0 0 16-3584
+chrM 1786 0 0 0 0 0 0 0 16-3584
+chrM 1787 0 0 0 0 0 0 0 16-3584
+chrM 1788 0 0 0 0 0 0 0 16-3584
+chrM 1789 0 0 0 0 0 0 0 16-3584
+chrM 1790 0 0 0 0 0 0 0 16-3584
+chrM 1791 0 0 0 0 0 0 0 16-3584
+chrM 1792 0 0 0 0 0 0 0 16-3584
+chrM 1793 0 0 0 0 0 0 0 16-3584
+chrM 1794 0 0 0 0 0 0 0 16-3584
+chrM 1795 0 0 0 0 0 0 0 16-3584
+chrM 1796 0 0 0 0 0 0 0 16-3584
+chrM 1797 0 0 0 0 0 0 0 16-3584
+chrM 1798 0 0 0 0 0 0 0 16-3584
+chrM 1799 0 0 0 0 0 0 0 16-3584
+chrM 1800 0 0 0 0 0 0 0 16-3584
+chrM 1801 0 0 0 0 0 0 0 16-3584
+chrM 1802 0 0 0 0 0 0 0 16-3584
+chrM 1803 0 0 0 0 0 0 0 16-3584
+chrM 1804 0 0 0 0 0 0 0 16-3584
+chrM 1805 0 0 0 0 0 0 0 16-3584
+chrM 1806 0 0 0 0 0 0 0 16-3584
+chrM 1807 0 0 0 0 0 0 0 16-3584
+chrM 1808 0 0 0 0 0 0 0 16-3584
+chrM 1809 0 0 0 0 0 0 0 16-3584
+chrM 1810 0 0 0 0 0 0 0 16-3584
+chrM 1811 0 0 0 0 0 0 0 16-3584
+chrM 1812 0 0 0 0 0 0 0 16-3584
+chrM 1813 0 0 0 0 0 0 0 16-3584
+chrM 1814 0 0 0 0 0 0 0 16-3584
+chrM 1815 0 0 0 0 0 0 0 16-3584
+chrM 1816 0 0 0 0 0 0 0 16-3584
+chrM 1817 0 0 0 0 0 0 0 16-3584
+chrM 1818 0 0 0 0 0 0 0 16-3584
+chrM 1819 0 0 0 0 0 0 0 16-3584
+chrM 1820 0 0 0 0 0 0 0 16-3584
+chrM 1821 0 0 0 0 0 0 0 16-3584
+chrM 1822 0 0 0 0 0 0 0 16-3584
+chrM 1823 0 0 0 0 0 0 0 16-3584
+chrM 1824 0 0 0 0 0 0 0 16-3584
+chrM 1825 0 0 0 0 0 0 0 16-3584
+chrM 1826 0 0 0 0 0 0 0 16-3584
+chrM 1827 0 0 0 0 0 0 0 16-3584
+chrM 1828 0 0 0 0 0 0 0 16-3584
+chrM 1829 0 0 0 0 0 0 0 16-3584
+chrM 1830 0 0 0 0 0 0 0 16-3584
+chrM 1831 0 0 0 0 0 0 0 16-3584
+chrM 1832 0 0 0 0 0 0 0 16-3584
+chrM 1833 0 0 0 0 0 0 0 16-3584
+chrM 1834 0 0 0 0 0 0 0 16-3584
+chrM 1835 0 0 0 0 0 0 0 16-3584
+chrM 1836 0 0 0 0 0 0 0 16-3584
+chrM 1837 0 0 0 0 0 0 0 16-3584
+chrM 1838 0 0 0 0 0 0 0 16-3584
+chrM 1839 0 0 0 0 0 0 0 16-3584
+chrM 1840 0 0 0 0 0 0 0 16-3584
+chrM 1841 0 0 0 0 0 0 0 16-3584
+chrM 1842 0 0 0 0 0 0 0 16-3584
+chrM 1843 0 0 0 0 0 0 0 16-3584
+chrM 1844 0 0 0 0 0 0 0 16-3584
+chrM 1845 0 0 0 0 0 0 0 16-3584
+chrM 1846 0 0 0 0 0 0 0 16-3584
+chrM 1847 0 0 0 0 0 0 0 16-3584
+chrM 1848 0 0 0 0 0 0 0 16-3584
+chrM 1849 0 0 0 0 0 0 0 16-3584
+chrM 1850 0 0 0 0 0 0 0 16-3584
+chrM 1851 0 0 0 0 0 0 0 16-3584
+chrM 1852 0 0 0 0 0 0 0 16-3584
+chrM 1853 0 0 0 0 0 0 0 16-3584
+chrM 1854 0 0 0 0 0 0 0 16-3584
+chrM 1855 0 0 0 0 0 0 0 16-3584
+chrM 1856 0 0 0 0 0 0 0 16-3584
+chrM 1857 0 0 0 0 0 0 0 16-3584
+chrM 1858 0 0 0 0 0 0 0 16-3584
+chrM 1859 0 0 0 0 0 0 0 16-3584
+chrM 1860 15 2 4 6 3 0 0 16-3584
+chrM 1861 15 4 1 3 7 0 0 16-3584
+chrM 1862 15 3 7 2 3 0 0 16-3584
+chrM 1863 15 4 5 4 2 0 0 16-3584
+chrM 1864 15 3 4 3 5 0 0 16-3584
+chrM 1865 30 8 8 11 3 0 0 16-3584
+chrM 1866 30 7 4 10 9 0 0 16-3584
+chrM 1867 30 9 6 6 9 0 0 16-3584
+chrM 1868 30 6 4 9 11 0 0 16-3584
+chrM 1869 30 8 9 6 7 0 0 16-3584
+chrM 1870 30 7 6 10 7 0 0 16-3584
+chrM 1871 30 10 6 7 7 0 0 16-3584
+chrM 1872 30 7 5 9 9 0 0 16-3584
+chrM 1873 30 6 11 8 5 0 0 16-3584
+chrM 1874 30 7 6 10 7 0 0 16-3584
+chrM 1875 30 5 6 5 14 0 0 16-3584
+chrM 1876 30 8 9 8 5 0 0 16-3584
+chrM 1877 30 7 6 12 5 0 0 16-3584
+chrM 1878 30 7 12 6 5 0 0 16-3584
+chrM 1879 30 8 6 7 9 0 0 16-3584
+chrM 1880 30 10 6 7 7 0 0 16-3584
+chrM 1881 30 6 12 7 5 0 0 16-3584
+chrM 1882 30 6 8 7 9 0 0 16-3584
+chrM 1883 30 7 8 8 7 0 0 16-3584
+chrM 1884 30 8 6 4 12 0 0 16-3584
+chrM 1885 30 11 6 8 5 0 0 16-3584
+chrM 1886 30 7 6 8 9 0 0 16-3584
+chrM 1887 30 7 12 7 4 0 0 16-3584
+chrM 1888 30 9 7 8 6 0 0 16-3584
+chrM 1889 30 9 4 8 9 0 0 16-3584
+chrM 1890 30 7 6 8 9 0 0 16-3584
+chrM 1891 30 8 8 6 8 0 0 16-3584
+chrM 1892 30 10 7 8 5 0 0 16-3584
+chrM 1893 30 3 8 8 11 0 0 16-3584
+chrM 1894 30 6 8 8 8 0 0 16-3584
+chrM 1895 30 7 9 7 7 0 0 16-3584
+chrM 1896 30 9 4 8 9 0 0 16-3584
+chrM 1897 30 5 9 5 11 0 0 16-3584
+chrM 1898 30 10 6 4 10 0 0 16-3584
+chrM 1899 30 6 8 10 6 0 0 16-3584
+chrM 1900 30 8 6 8 8 0 0 16-3584
+chrM 1901 30 7 11 4 8 0 0 16-3584
+chrM 1902 30 9 7 6 8 0 0 16-3584
+chrM 1903 30 7 7 7 9 0 0 16-3584
+chrM 1904 30 6 5 8 11 0 0 16-3584
+chrM 1905 30 6 6 8 10 0 0 16-3584
+chrM 1906 30 12 6 10 2 0 0 16-3584
+chrM 1907 30 7 6 4 13 0 0 16-3584
+chrM 1908 30 8 8 7 7 0 0 16-3584
+chrM 1909 30 6 8 11 5 0 0 16-3584
+chrM 1910 30 10 13 6 1 0 0 16-3584
+chrM 1911 30 8 6 13 3 0 0 16-3584
+chrM 1912 30 5 9 10 6 0 0 16-3584
+chrM 1913 30 5 7 7 11 0 0 16-3584
+chrM 1914 30 8 9 9 4 0 0 16-3584
+chrM 1915 30 7 5 12 6 0 0 16-3584
+chrM 1916 30 10 8 5 7 0 0 16-3584
+chrM 1917 30 5 5 10 10 0 0 16-3584
+chrM 1918 30 4 9 11 6 0 0 16-3584
+chrM 1919 30 11 7 7 5 0 0 16-3584
+chrM 1920 30 7 10 8 5 0 0 16-3584
+chrM 1921 30 7 6 10 7 0 0 16-3584
+chrM 1922 30 11 6 8 5 0 0 16-3584
+chrM 1923 30 6 9 8 7 0 0 16-3584
+chrM 1924 30 9 7 8 6 0 0 16-3584
+chrM 1925 30 6 7 7 10 0 0 16-3584
+chrM 1926 30 8 4 5 13 0 0 16-3584
+chrM 1927 30 6 9 6 9 0 0 16-3584
+chrM 1928 30 6 5 10 9 0 0 16-3584
+chrM 1929 30 4 10 8 8 0 0 16-3584
+chrM 1930 30 5 8 9 8 0 0 16-3584
+chrM 1931 30 6 5 9 10 0 0 16-3584
+chrM 1932 30 10 6 8 6 0 0 16-3584
+chrM 1933 30 8 4 6 12 0 0 16-3584
+chrM 1934 30 6 9 7 8 0 0 16-3584
+chrM 1935 30 8 7 9 6 0 0 16-3584
+chrM 1936 30 7 4 7 12 0 0 16-3584
+chrM 1937 30 12 9 7 2 0 0 16-3584
+chrM 1938 30 8 9 7 6 0 0 16-3584
+chrM 1939 30 5 5 9 11 0 0 16-3584
+chrM 1940 15 6 5 3 1 0 0 16-3584
+chrM 1941 15 6 2 2 5 0 0 16-3584
+chrM 1942 15 1 2 5 7 0 0 16-3584
+chrM 1943 15 6 3 3 3 0 0 16-3584
+chrM 1944 15 3 2 4 6 0 0 16-3584
+chrM 1945 0 0 0 0 0 0 0 16-3584
+chrM 1946 0 0 0 0 0 0 0 16-3584
+chrM 1947 0 0 0 0 0 0 0 16-3584
+chrM 1948 0 0 0 0 0 0 0 16-3584
+chrM 1949 0 0 0 0 0 0 0 16-3584
+chrM 1950 0 0 0 0 0 0 0 16-3584
+chrM 1951 0 0 0 0 0 0 0 16-3584
+chrM 1952 0 0 0 0 0 0 0 16-3584
+chrM 1953 0 0 0 0 0 0 0 16-3584
+chrM 1954 0 0 0 0 0 0 0 16-3584
+chrM 1955 0 0 0 0 0 0 0 16-3584
+chrM 1956 0 0 0 0 0 0 0 16-3584
+chrM 1957 0 0 0 0 0 0 0 16-3584
+chrM 1958 0 0 0 0 0 0 0 16-3584
+chrM 1959 0 0 0 0 0 0 0 16-3584
+chrM 1960 0 0 0 0 0 0 0 16-3584
+chrM 1961 0 0 0 0 0 0 0 16-3584
+chrM 1962 0 0 0 0 0 0 0 16-3584
+chrM 1963 0 0 0 0 0 0 0 16-3584
+chrM 1964 0 0 0 0 0 0 0 16-3584
+chrM 1965 0 0 0 0 0 0 0 16-3584
+chrM 1966 0 0 0 0 0 0 0 16-3584
+chrM 1967 0 0 0 0 0 0 0 16-3584
+chrM 1968 0 0 0 0 0 0 0 16-3584
+chrM 1969 0 0 0 0 0 0 0 16-3584
+chrM 1970 0 0 0 0 0 0 0 16-3584
+chrM 1971 0 0 0 0 0 0 0 16-3584
+chrM 1972 0 0 0 0 0 0 0 16-3584
+chrM 1973 0 0 0 0 0 0 0 16-3584
+chrM 1974 0 0 0 0 0 0 0 16-3584
+chrM 1975 0 0 0 0 0 0 0 16-3584
+chrM 1976 0 0 0 0 0 0 0 16-3584
+chrM 1977 0 0 0 0 0 0 0 16-3584
+chrM 1978 0 0 0 0 0 0 0 16-3584
+chrM 1979 0 0 0 0 0 0 0 16-3584
+chrM 1980 0 0 0 0 0 0 0 16-3584
+chrM 1981 0 0 0 0 0 0 0 16-3584
+chrM 1982 0 0 0 0 0 0 0 16-3584
+chrM 1983 0 0 0 0 0 0 0 16-3584
+chrM 1984 0 0 0 0 0 0 0 16-3584
+chrM 1985 0 0 0 0 0 0 0 16-3584
+chrM 1986 0 0 0 0 0 0 0 16-3584
+chrM 1987 0 0 0 0 0 0 0 16-3584
+chrM 1988 0 0 0 0 0 0 0 16-3584
+chrM 1989 0 0 0 0 0 0 0 16-3584
+chrM 1990 0 0 0 0 0 0 0 16-3584
+chrM 1991 0 0 0 0 0 0 0 16-3584
+chrM 1992 0 0 0 0 0 0 0 16-3584
+chrM 1993 0 0 0 0 0 0 0 16-3584
+chrM 1994 0 0 0 0 0 0 0 16-3584
+chrM 1995 0 0 0 0 0 0 0 16-3584
+chrM 1996 0 0 0 0 0 0 0 16-3584
+chrM 1997 0 0 0 0 0 0 0 16-3584
+chrM 1998 0 0 0 0 0 0 0 16-3584
+chrM 1999 0 0 0 0 0 0 0 16-3584
+chrM 2000 0 0 0 0 0 0 0 16-3584
+chrM 2001 0 0 0 0 0 0 0 16-3584
+chrM 2002 0 0 0 0 0 0 0 16-3584
+chrM 2003 0 0 0 0 0 0 0 16-3584
+chrM 2004 0 0 0 0 0 0 0 16-3584
+chrM 2005 0 0 0 0 0 0 0 16-3584
+chrM 2006 0 0 0 0 0 0 0 16-3584
+chrM 2007 0 0 0 0 0 0 0 16-3584
+chrM 2008 0 0 0 0 0 0 0 16-3584
+chrM 2009 0 0 0 0 0 0 0 16-3584
+chrM 2010 0 0 0 0 0 0 0 16-3584
+chrM 2011 0 0 0 0 0 0 0 16-3584
+chrM 2012 0 0 0 0 0 0 0 16-3584
+chrM 2013 0 0 0 0 0 0 0 16-3584
+chrM 2014 0 0 0 0 0 0 0 16-3584
+chrM 2015 0 0 0 0 0 0 0 16-3584
+chrM 2016 0 0 0 0 0 0 0 16-3584
+chrM 2017 0 0 0 0 0 0 0 16-3584
+chrM 2018 0 0 0 0 0 0 0 16-3584
+chrM 2019 0 0 0 0 0 0 0 16-3584
+chrM 2020 0 0 0 0 0 0 0 16-3584
+chrM 2021 0 0 0 0 0 0 0 16-3584
+chrM 2022 0 0 0 0 0 0 0 16-3584
+chrM 2023 0 0 0 0 0 0 0 16-3584
+chrM 2024 0 0 0 0 0 0 0 16-3584
+chrM 2025 0 0 0 0 0 0 0 16-3584
+chrM 2026 0 0 0 0 0 0 0 16-3584
+chrM 2027 0 0 0 0 0 0 0 16-3584
+chrM 2028 0 0 0 0 0 0 0 16-3584
+chrM 2029 0 0 0 0 0 0 0 16-3584
+chrM 2030 0 0 0 0 0 0 0 16-3584
+chrM 2031 0 0 0 0 0 0 0 16-3584
+chrM 2032 0 0 0 0 0 0 0 16-3584
+chrM 2033 0 0 0 0 0 0 0 16-3584
+chrM 2034 0 0 0 0 0 0 0 16-3584
+chrM 2035 0 0 0 0 0 0 0 16-3584
+chrM 2036 0 0 0 0 0 0 0 16-3584
+chrM 2037 0 0 0 0 0 0 0 16-3584
+chrM 2038 0 0 0 0 0 0 0 16-3584
+chrM 2039 0 0 0 0 0 0 0 16-3584
+chrM 2040 0 0 0 0 0 0 0 16-3584
+chrM 2041 0 0 0 0 0 0 0 16-3584
+chrM 2042 0 0 0 0 0 0 0 16-3584
+chrM 2043 0 0 0 0 0 0 0 16-3584
+chrM 2044 0 0 0 0 0 0 0 16-3584
+chrM 2045 0 0 0 0 0 0 0 16-3584
+chrM 2046 0 0 0 0 0 0 0 16-3584
+chrM 2047 0 0 0 0 0 0 0 16-3584
+chrM 2048 0 0 0 0 0 0 0 16-3584
+chrM 2049 0 0 0 0 0 0 0 16-3584
+chrM 2050 0 0 0 0 0 0 0 16-3584
+chrM 2051 0 0 0 0 0 0 0 16-3584
+chrM 2052 0 0 0 0 0 0 0 16-3584
+chrM 2053 0 0 0 0 0 0 0 16-3584
+chrM 2054 0 0 0 0 0 0 0 16-3584
+chrM 2055 0 0 0 0 0 0 0 16-3584
+chrM 2056 0 0 0 0 0 0 0 16-3584
+chrM 2057 0 0 0 0 0 0 0 16-3584
+chrM 2058 0 0 0 0 0 0 0 16-3584
+chrM 2059 0 0 0 0 0 0 0 16-3584
+chrM 2060 0 0 0 0 0 0 0 16-3584
+chrM 2061 0 0 0 0 0 0 0 16-3584
+chrM 2062 0 0 0 0 0 0 0 16-3584
+chrM 2063 0 0 0 0 0 0 0 16-3584
+chrM 2064 0 0 0 0 0 0 0 16-3584
+chrM 2065 0 0 0 0 0 0 0 16-3584
+chrM 2066 0 0 0 0 0 0 0 16-3584
+chrM 2067 0 0 0 0 0 0 0 16-3584
+chrM 2068 0 0 0 0 0 0 0 16-3584
+chrM 2069 0 0 0 0 0 0 0 16-3584
+chrM 2070 0 0 0 0 0 0 0 16-3584
+chrM 2071 0 0 0 0 0 0 0 16-3584
+chrM 2072 0 0 0 0 0 0 0 16-3584
+chrM 2073 0 0 0 0 0 0 0 16-3584
+chrM 2074 0 0 0 0 0 0 0 16-3584
+chrM 2075 0 0 0 0 0 0 0 16-3584
+chrM 2076 0 0 0 0 0 0 0 16-3584
+chrM 2077 0 0 0 0 0 0 0 16-3584
+chrM 2078 0 0 0 0 0 0 0 16-3584
+chrM 2079 0 0 0 0 0 0 0 16-3584
+chrM 2080 0 0 0 0 0 0 0 16-3584
+chrM 2081 0 0 0 0 0 0 0 16-3584
+chrM 2082 0 0 0 0 0 0 0 16-3584
+chrM 2083 0 0 0 0 0 0 0 16-3584
+chrM 2084 0 0 0 0 0 0 0 16-3584
+chrM 2085 0 0 0 0 0 0 0 16-3584
+chrM 2086 0 0 0 0 0 0 0 16-3584
+chrM 2087 0 0 0 0 0 0 0 16-3584
+chrM 2088 0 0 0 0 0 0 0 16-3584
+chrM 2089 0 0 0 0 0 0 0 16-3584
+chrM 2090 0 0 0 0 0 0 0 16-3584
+chrM 2091 0 0 0 0 0 0 0 16-3584
+chrM 2092 0 0 0 0 0 0 0 16-3584
+chrM 2093 0 0 0 0 0 0 0 16-3584
+chrM 2094 0 0 0 0 0 0 0 16-3584
+chrM 2095 0 0 0 0 0 0 0 16-3584
+chrM 2096 0 0 0 0 0 0 0 16-3584
+chrM 2097 0 0 0 0 0 0 0 16-3584
+chrM 2098 0 0 0 0 0 0 0 16-3584
+chrM 2099 0 0 0 0 0 0 0 16-3584
+chrM 2100 0 0 0 0 0 0 0 16-3584
+chrM 2101 0 0 0 0 0 0 0 16-3584
+chrM 2102 0 0 0 0 0 0 0 16-3584
+chrM 2103 0 0 0 0 0 0 0 16-3584
+chrM 2104 0 0 0 0 0 0 0 16-3584
+chrM 2105 0 0 0 0 0 0 0 16-3584
+chrM 2106 0 0 0 0 0 0 0 16-3584
+chrM 2107 0 0 0 0 0 0 0 16-3584
+chrM 2108 0 0 0 0 0 0 0 16-3584
+chrM 2109 0 0 0 0 0 0 0 16-3584
+chrM 2110 0 0 0 0 0 0 0 16-3584
+chrM 2111 0 0 0 0 0 0 0 16-3584
+chrM 2112 0 0 0 0 0 0 0 16-3584
+chrM 2113 0 0 0 0 0 0 0 16-3584
+chrM 2114 0 0 0 0 0 0 0 16-3584
+chrM 2115 0 0 0 0 0 0 0 16-3584
+chrM 2116 0 0 0 0 0 0 0 16-3584
+chrM 2117 0 0 0 0 0 0 0 16-3584
+chrM 2118 0 0 0 0 0 0 0 16-3584
+chrM 2119 0 0 0 0 0 0 0 16-3584
+chrM 2120 0 0 0 0 0 0 0 16-3584
+chrM 2121 0 0 0 0 0 0 0 16-3584
+chrM 2122 0 0 0 0 0 0 0 16-3584
+chrM 2123 0 0 0 0 0 0 0 16-3584
+chrM 2124 0 0 0 0 0 0 0 16-3584
+chrM 2125 0 0 0 0 0 0 0 16-3584
+chrM 2126 0 0 0 0 0 0 0 16-3584
+chrM 2127 0 0 0 0 0 0 0 16-3584
+chrM 2128 0 0 0 0 0 0 0 16-3584
+chrM 2129 0 0 0 0 0 0 0 16-3584
+chrM 2130 0 0 0 0 0 0 0 16-3584
+chrM 2131 0 0 0 0 0 0 0 16-3584
+chrM 2132 0 0 0 0 0 0 0 16-3584
+chrM 2133 0 0 0 0 0 0 0 16-3584
+chrM 2134 0 0 0 0 0 0 0 16-3584
+chrM 2135 0 0 0 0 0 0 0 16-3584
+chrM 2136 0 0 0 0 0 0 0 16-3584
+chrM 2137 0 0 0 0 0 0 0 16-3584
+chrM 2138 0 0 0 0 0 0 0 16-3584
+chrM 2139 0 0 0 0 0 0 0 16-3584
+chrM 2140 0 0 0 0 0 0 0 16-3584
+chrM 2141 0 0 0 0 0 0 0 16-3584
+chrM 2142 0 0 0 0 0 0 0 16-3584
+chrM 2143 0 0 0 0 0 0 0 16-3584
+chrM 2144 0 0 0 0 0 0 0 16-3584
+chrM 2145 0 0 0 0 0 0 0 16-3584
+chrM 2146 0 0 0 0 0 0 0 16-3584
+chrM 2147 0 0 0 0 0 0 0 16-3584
+chrM 2148 0 0 0 0 0 0 0 16-3584
+chrM 2149 0 0 0 0 0 0 0 16-3584
+chrM 2150 0 0 0 0 0 0 0 16-3584
+chrM 2151 0 0 0 0 0 0 0 16-3584
+chrM 2152 0 0 0 0 0 0 0 16-3584
+chrM 2153 0 0 0 0 0 0 0 16-3584
+chrM 2154 0 0 0 0 0 0 0 16-3584
+chrM 2155 0 0 0 0 0 0 0 16-3584
+chrM 2156 0 0 0 0 0 0 0 16-3584
+chrM 2157 0 0 0 0 0 0 0 16-3584
+chrM 2158 0 0 0 0 0 0 0 16-3584
+chrM 2159 0 0 0 0 0 0 0 16-3584
+chrM 2160 0 0 0 0 0 0 0 16-3584
+chrM 2161 0 0 0 0 0 0 0 16-3584
+chrM 2162 0 0 0 0 0 0 0 16-3584
+chrM 2163 0 0 0 0 0 0 0 16-3584
+chrM 2164 0 0 0 0 0 0 0 16-3584
+chrM 2165 0 0 0 0 0 0 0 16-3584
+chrM 2166 0 0 0 0 0 0 0 16-3584
+chrM 2167 0 0 0 0 0 0 0 16-3584
+chrM 2168 0 0 0 0 0 0 0 16-3584
+chrM 2169 0 0 0 0 0 0 0 16-3584
+chrM 2170 0 0 0 0 0 0 0 16-3584
+chrM 2171 0 0 0 0 0 0 0 16-3584
+chrM 2172 0 0 0 0 0 0 0 16-3584
+chrM 2173 0 0 0 0 0 0 0 16-3584
+chrM 2174 0 0 0 0 0 0 0 16-3584
+chrM 2175 0 0 0 0 0 0 0 16-3584
+chrM 2176 0 0 0 0 0 0 0 16-3584
+chrM 2177 0 0 0 0 0 0 0 16-3584
+chrM 2178 0 0 0 0 0 0 0 16-3584
+chrM 2179 0 0 0 0 0 0 0 16-3584
+chrM 2180 0 0 0 0 0 0 0 16-3584
+chrM 2181 0 0 0 0 0 0 0 16-3584
+chrM 2182 0 0 0 0 0 0 0 16-3584
+chrM 2183 0 0 0 0 0 0 0 16-3584
+chrM 2184 0 0 0 0 0 0 0 16-3584
+chrM 2185 0 0 0 0 0 0 0 16-3584
+chrM 2186 0 0 0 0 0 0 0 16-3584
+chrM 2187 0 0 0 0 0 0 0 16-3584
+chrM 2188 0 0 0 0 0 0 0 16-3584
+chrM 2189 0 0 0 0 0 0 0 16-3584
+chrM 2190 0 0 0 0 0 0 0 16-3584
+chrM 2191 0 0 0 0 0 0 0 16-3584
+chrM 2192 0 0 0 0 0 0 0 16-3584
+chrM 2193 0 0 0 0 0 0 0 16-3584
+chrM 2194 0 0 0 0 0 0 0 16-3584
+chrM 2195 0 0 0 0 0 0 0 16-3584
+chrM 2196 0 0 0 0 0 0 0 16-3584
+chrM 2197 0 0 0 0 0 0 0 16-3584
+chrM 2198 0 0 0 0 0 0 0 16-3584
+chrM 2199 0 0 0 0 0 0 0 16-3584
+chrM 2200 0 0 0 0 0 0 0 16-3584
+chrM 2201 0 0 0 0 0 0 0 16-3584
+chrM 2202 0 0 0 0 0 0 0 16-3584
+chrM 2203 0 0 0 0 0 0 0 16-3584
+chrM 2204 0 0 0 0 0 0 0 16-3584
+chrM 2205 0 0 0 0 0 0 0 16-3584
+chrM 2206 0 0 0 0 0 0 0 16-3584
+chrM 2207 0 0 0 0 0 0 0 16-3584
+chrM 2208 0 0 0 0 0 0 0 16-3584
+chrM 2209 0 0 0 0 0 0 0 16-3584
+chrM 2210 0 0 0 0 0 0 0 16-3584
+chrM 2211 0 0 0 0 0 0 0 16-3584
+chrM 2212 0 0 0 0 0 0 0 16-3584
+chrM 2213 0 0 0 0 0 0 0 16-3584
+chrM 2214 0 0 0 0 0 0 0 16-3584
+chrM 2215 0 0 0 0 0 0 0 16-3584
+chrM 2216 0 0 0 0 0 0 0 16-3584
+chrM 2217 0 0 0 0 0 0 0 16-3584
+chrM 2218 0 0 0 0 0 0 0 16-3584
+chrM 2219 0 0 0 0 0 0 0 16-3584
+chrM 2220 0 0 0 0 0 0 0 16-3584
+chrM 2221 0 0 0 0 0 0 0 16-3584
+chrM 2222 0 0 0 0 0 0 0 16-3584
+chrM 2223 0 0 0 0 0 0 0 16-3584
+chrM 2224 0 0 0 0 0 0 0 16-3584
+chrM 2225 0 0 0 0 0 0 0 16-3584
+chrM 2226 0 0 0 0 0 0 0 16-3584
+chrM 2227 0 0 0 0 0 0 0 16-3584
+chrM 2228 0 0 0 0 0 0 0 16-3584
+chrM 2229 0 0 0 0 0 0 0 16-3584
+chrM 2230 0 0 0 0 0 0 0 16-3584
+chrM 2231 0 0 0 0 0 0 0 16-3584
+chrM 2232 0 0 0 0 0 0 0 16-3584
+chrM 2233 0 0 0 0 0 0 0 16-3584
+chrM 2234 0 0 0 0 0 0 0 16-3584
+chrM 2235 0 0 0 0 0 0 0 16-3584
+chrM 2236 0 0 0 0 0 0 0 16-3584
+chrM 2237 0 0 0 0 0 0 0 16-3584
+chrM 2238 0 0 0 0 0 0 0 16-3584
+chrM 2239 0 0 0 0 0 0 0 16-3584
+chrM 2240 0 0 0 0 0 0 0 16-3584
+chrM 2241 0 0 0 0 0 0 0 16-3584
+chrM 2242 0 0 0 0 0 0 0 16-3584
+chrM 2243 0 0 0 0 0 0 0 16-3584
+chrM 2244 0 0 0 0 0 0 0 16-3584
+chrM 2245 0 0 0 0 0 0 0 16-3584
+chrM 2246 0 0 0 0 0 0 0 16-3584
+chrM 2247 0 0 0 0 0 0 0 16-3584
+chrM 2248 0 0 0 0 0 0 0 16-3584
+chrM 2249 0 0 0 0 0 0 0 16-3584
+chrM 2250 0 0 0 0 0 0 0 16-3584
+chrM 2251 0 0 0 0 0 0 0 16-3584
+chrM 2252 0 0 0 0 0 0 0 16-3584
+chrM 2253 0 0 0 0 0 0 0 16-3584
+chrM 2254 0 0 0 0 0 0 0 16-3584
+chrM 2255 0 0 0 0 0 0 0 16-3584
+chrM 2256 0 0 0 0 0 0 0 16-3584
+chrM 2257 0 0 0 0 0 0 0 16-3584
+chrM 2258 0 0 0 0 0 0 0 16-3584
+chrM 2259 0 0 0 0 0 0 0 16-3584
+chrM 2260 0 0 0 0 0 0 0 16-3584
+chrM 2261 0 0 0 0 0 0 0 16-3584
+chrM 2262 0 0 0 0 0 0 0 16-3584
+chrM 2263 0 0 0 0 0 0 0 16-3584
+chrM 2264 0 0 0 0 0 0 0 16-3584
+chrM 2265 0 0 0 0 0 0 0 16-3584
+chrM 2266 0 0 0 0 0 0 0 16-3584
+chrM 2267 0 0 0 0 0 0 0 16-3584
+chrM 2268 0 0 0 0 0 0 0 16-3584
+chrM 2269 0 0 0 0 0 0 0 16-3584
+chrM 2270 0 0 0 0 0 0 0 16-3584
+chrM 2271 0 0 0 0 0 0 0 16-3584
+chrM 2272 0 0 0 0 0 0 0 16-3584
+chrM 2273 0 0 0 0 0 0 0 16-3584
+chrM 2274 0 0 0 0 0 0 0 16-3584
+chrM 2275 0 0 0 0 0 0 0 16-3584
+chrM 2276 0 0 0 0 0 0 0 16-3584
+chrM 2277 0 0 0 0 0 0 0 16-3584
+chrM 2278 0 0 0 0 0 0 0 16-3584
+chrM 2279 0 0 0 0 0 0 0 16-3584
+chrM 2280 0 0 0 0 0 0 0 16-3584
+chrM 2281 0 0 0 0 0 0 0 16-3584
+chrM 2282 0 0 0 0 0 0 0 16-3584
+chrM 2283 0 0 0 0 0 0 0 16-3584
+chrM 2284 0 0 0 0 0 0 0 16-3584
+chrM 2285 0 0 0 0 0 0 0 16-3584
+chrM 2286 0 0 0 0 0 0 0 16-3584
+chrM 2287 0 0 0 0 0 0 0 16-3584
+chrM 2288 0 0 0 0 0 0 0 16-3584
+chrM 2289 0 0 0 0 0 0 0 16-3584
+chrM 2290 0 0 0 0 0 0 0 16-3584
+chrM 2291 0 0 0 0 0 0 0 16-3584
+chrM 2292 0 0 0 0 0 0 0 16-3584
+chrM 2293 0 0 0 0 0 0 0 16-3584
+chrM 2294 0 0 0 0 0 0 0 16-3584
+chrM 2295 0 0 0 0 0 0 0 16-3584
+chrM 2296 0 0 0 0 0 0 0 16-3584
+chrM 2297 0 0 0 0 0 0 0 16-3584
+chrM 2298 0 0 0 0 0 0 0 16-3584
+chrM 2299 0 0 0 0 0 0 0 16-3584
+chrM 2300 0 0 0 0 0 0 0 16-3584
+chrM 2301 0 0 0 0 0 0 0 16-3584
+chrM 2302 0 0 0 0 0 0 0 16-3584
+chrM 2303 0 0 0 0 0 0 0 16-3584
+chrM 2304 0 0 0 0 0 0 0 16-3584
+chrM 2305 0 0 0 0 0 0 0 16-3584
+chrM 2306 0 0 0 0 0 0 0 16-3584
+chrM 2307 0 0 0 0 0 0 0 16-3584
+chrM 2308 0 0 0 0 0 0 0 16-3584
+chrM 2309 0 0 0 0 0 0 0 16-3584
+chrM 2310 0 0 0 0 0 0 0 16-3584
+chrM 2311 0 0 0 0 0 0 0 16-3584
+chrM 2312 0 0 0 0 0 0 0 16-3584
+chrM 2313 0 0 0 0 0 0 0 16-3584
+chrM 2314 0 0 0 0 0 0 0 16-3584
+chrM 2315 0 0 0 0 0 0 0 16-3584
+chrM 2316 0 0 0 0 0 0 0 16-3584
+chrM 2317 0 0 0 0 0 0 0 16-3584
+chrM 2318 0 0 0 0 0 0 0 16-3584
+chrM 2319 0 0 0 0 0 0 0 16-3584
+chrM 2320 0 0 0 0 0 0 0 16-3584
+chrM 2321 0 0 0 0 0 0 0 16-3584
+chrM 2322 0 0 0 0 0 0 0 16-3584
+chrM 2323 0 0 0 0 0 0 0 16-3584
+chrM 2324 0 0 0 0 0 0 0 16-3584
+chrM 2325 0 0 0 0 0 0 0 16-3584
+chrM 2326 0 0 0 0 0 0 0 16-3584
+chrM 2327 0 0 0 0 0 0 0 16-3584
+chrM 2328 0 0 0 0 0 0 0 16-3584
+chrM 2329 0 0 0 0 0 0 0 16-3584
+chrM 2330 0 0 0 0 0 0 0 16-3584
+chrM 2331 0 0 0 0 0 0 0 16-3584
+chrM 2332 0 0 0 0 0 0 0 16-3584
+chrM 2333 0 0 0 0 0 0 0 16-3584
+chrM 2334 0 0 0 0 0 0 0 16-3584
+chrM 2335 0 0 0 0 0 0 0 16-3584
+chrM 2336 0 0 0 0 0 0 0 16-3584
+chrM 2337 0 0 0 0 0 0 0 16-3584
+chrM 2338 0 0 0 0 0 0 0 16-3584
+chrM 2339 0 0 0 0 0 0 0 16-3584
+chrM 2340 0 0 0 0 0 0 0 16-3584
+chrM 2341 0 0 0 0 0 0 0 16-3584
+chrM 2342 0 0 0 0 0 0 0 16-3584
+chrM 2343 0 0 0 0 0 0 0 16-3584
+chrM 2344 0 0 0 0 0 0 0 16-3584
+chrM 2345 0 0 0 0 0 0 0 16-3584
+chrM 2346 0 0 0 0 0 0 0 16-3584
+chrM 2347 0 0 0 0 0 0 0 16-3584
+chrM 2348 0 0 0 0 0 0 0 16-3584
+chrM 2349 0 0 0 0 0 0 0 16-3584
+chrM 2350 0 0 0 0 0 0 0 16-3584
+chrM 2351 0 0 0 0 0 0 0 16-3584
+chrM 2352 0 0 0 0 0 0 0 16-3584
+chrM 2353 0 0 0 0 0 0 0 16-3584
+chrM 2354 0 0 0 0 0 0 0 16-3584
+chrM 2355 0 0 0 0 0 0 0 16-3584
+chrM 2356 0 0 0 0 0 0 0 16-3584
+chrM 2357 0 0 0 0 0 0 0 16-3584
+chrM 2358 0 0 0 0 0 0 0 16-3584
+chrM 2359 0 0 0 0 0 0 0 16-3584
+chrM 2360 0 0 0 0 0 0 0 16-3584
+chrM 2361 0 0 0 0 0 0 0 16-3584
+chrM 2362 0 0 0 0 0 0 0 16-3584
+chrM 2363 0 0 0 0 0 0 0 16-3584
+chrM 2364 0 0 0 0 0 0 0 16-3584
+chrM 2365 0 0 0 0 0 0 0 16-3584
+chrM 2366 0 0 0 0 0 0 0 16-3584
+chrM 2367 0 0 0 0 0 0 0 16-3584
+chrM 2368 0 0 0 0 0 0 0 16-3584
+chrM 2369 0 0 0 0 0 0 0 16-3584
+chrM 2370 0 0 0 0 0 0 0 16-3584
+chrM 2371 0 0 0 0 0 0 0 16-3584
+chrM 2372 0 0 0 0 0 0 0 16-3584
+chrM 2373 0 0 0 0 0 0 0 16-3584
+chrM 2374 0 0 0 0 0 0 0 16-3584
+chrM 2375 0 0 0 0 0 0 0 16-3584
+chrM 2376 0 0 0 0 0 0 0 16-3584
+chrM 2377 0 0 0 0 0 0 0 16-3584
+chrM 2378 0 0 0 0 0 0 0 16-3584
+chrM 2379 0 0 0 0 0 0 0 16-3584
+chrM 2380 0 0 0 0 0 0 0 16-3584
+chrM 2381 0 0 0 0 0 0 0 16-3584
+chrM 2382 0 0 0 0 0 0 0 16-3584
+chrM 2383 0 0 0 0 0 0 0 16-3584
+chrM 2384 0 0 0 0 0 0 0 16-3584
+chrM 2385 0 0 0 0 0 0 0 16-3584
+chrM 2386 0 0 0 0 0 0 0 16-3584
+chrM 2387 0 0 0 0 0 0 0 16-3584
+chrM 2388 0 0 0 0 0 0 0 16-3584
+chrM 2389 0 0 0 0 0 0 0 16-3584
+chrM 2390 0 0 0 0 0 0 0 16-3584
+chrM 2391 0 0 0 0 0 0 0 16-3584
+chrM 2392 0 0 0 0 0 0 0 16-3584
+chrM 2393 0 0 0 0 0 0 0 16-3584
+chrM 2394 0 0 0 0 0 0 0 16-3584
+chrM 2395 0 0 0 0 0 0 0 16-3584
+chrM 2396 0 0 0 0 0 0 0 16-3584
+chrM 2397 0 0 0 0 0 0 0 16-3584
+chrM 2398 0 0 0 0 0 0 0 16-3584
+chrM 2399 0 0 0 0 0 0 0 16-3584
+chrM 2400 0 0 0 0 0 0 0 16-3584
+chrM 2401 0 0 0 0 0 0 0 16-3584
+chrM 2402 0 0 0 0 0 0 0 16-3584
+chrM 2403 0 0 0 0 0 0 0 16-3584
+chrM 2404 0 0 0 0 0 0 0 16-3584
+chrM 2405 0 0 0 0 0 0 0 16-3584
+chrM 2406 0 0 0 0 0 0 0 16-3584
+chrM 2407 0 0 0 0 0 0 0 16-3584
+chrM 2408 0 0 0 0 0 0 0 16-3584
+chrM 2409 0 0 0 0 0 0 0 16-3584
+chrM 2410 0 0 0 0 0 0 0 16-3584
+chrM 2411 0 0 0 0 0 0 0 16-3584
+chrM 2412 0 0 0 0 0 0 0 16-3584
+chrM 2413 0 0 0 0 0 0 0 16-3584
+chrM 2414 0 0 0 0 0 0 0 16-3584
+chrM 2415 0 0 0 0 0 0 0 16-3584
+chrM 2416 0 0 0 0 0 0 0 16-3584
+chrM 2417 0 0 0 0 0 0 0 16-3584
+chrM 2418 0 0 0 0 0 0 0 16-3584
+chrM 2419 0 0 0 0 0 0 0 16-3584
+chrM 2420 0 0 0 0 0 0 0 16-3584
+chrM 2421 0 0 0 0 0 0 0 16-3584
+chrM 2422 0 0 0 0 0 0 0 16-3584
+chrM 2423 0 0 0 0 0 0 0 16-3584
+chrM 2424 0 0 0 0 0 0 0 16-3584
+chrM 2425 0 0 0 0 0 0 0 16-3584
+chrM 2426 0 0 0 0 0 0 0 16-3584
+chrM 2427 0 0 0 0 0 0 0 16-3584
+chrM 2428 0 0 0 0 0 0 0 16-3584
+chrM 2429 0 0 0 0 0 0 0 16-3584
+chrM 2430 0 0 0 0 0 0 0 16-3584
+chrM 2431 0 0 0 0 0 0 0 16-3584
+chrM 2432 0 0 0 0 0 0 0 16-3584
+chrM 2433 0 0 0 0 0 0 0 16-3584
+chrM 2434 0 0 0 0 0 0 0 16-3584
+chrM 2435 0 0 0 0 0 0 0 16-3584
+chrM 2436 0 0 0 0 0 0 0 16-3584
+chrM 2437 0 0 0 0 0 0 0 16-3584
+chrM 2438 0 0 0 0 0 0 0 16-3584
+chrM 2439 0 0 0 0 0 0 0 16-3584
+chrM 2440 0 0 0 0 0 0 0 16-3584
+chrM 2441 0 0 0 0 0 0 0 16-3584
+chrM 2442 0 0 0 0 0 0 0 16-3584
+chrM 2443 0 0 0 0 0 0 0 16-3584
+chrM 2444 0 0 0 0 0 0 0 16-3584
+chrM 2445 0 0 0 0 0 0 0 16-3584
+chrM 2446 0 0 0 0 0 0 0 16-3584
+chrM 2447 0 0 0 0 0 0 0 16-3584
+chrM 2448 0 0 0 0 0 0 0 16-3584
+chrM 2449 0 0 0 0 0 0 0 16-3584
+chrM 2450 0 0 0 0 0 0 0 16-3584
+chrM 2451 0 0 0 0 0 0 0 16-3584
+chrM 2452 0 0 0 0 0 0 0 16-3584
+chrM 2453 0 0 0 0 0 0 0 16-3584
+chrM 2454 0 0 0 0 0 0 0 16-3584
+chrM 2455 0 0 0 0 0 0 0 16-3584
+chrM 2456 0 0 0 0 0 0 0 16-3584
+chrM 2457 0 0 0 0 0 0 0 16-3584
+chrM 2458 0 0 0 0 0 0 0 16-3584
+chrM 2459 0 0 0 0 0 0 0 16-3584
+chrM 2460 0 0 0 0 0 0 0 16-3584
+chrM 2461 0 0 0 0 0 0 0 16-3584
+chrM 2462 0 0 0 0 0 0 0 16-3584
+chrM 2463 0 0 0 0 0 0 0 16-3584
+chrM 2464 0 0 0 0 0 0 0 16-3584
+chrM 2465 0 0 0 0 0 0 0 16-3584
+chrM 2466 0 0 0 0 0 0 0 16-3584
+chrM 2467 0 0 0 0 0 0 0 16-3584
+chrM 2468 0 0 0 0 0 0 0 16-3584
+chrM 2469 0 0 0 0 0 0 0 16-3584
+chrM 2470 0 0 0 0 0 0 0 16-3584
+chrM 2471 0 0 0 0 0 0 0 16-3584
+chrM 2472 0 0 0 0 0 0 0 16-3584
+chrM 2473 0 0 0 0 0 0 0 16-3584
+chrM 2474 0 0 0 0 0 0 0 16-3584
+chrM 2475 0 0 0 0 0 0 0 16-3584
+chrM 2476 0 0 0 0 0 0 0 16-3584
+chrM 2477 0 0 0 0 0 0 0 16-3584
+chrM 2478 0 0 0 0 0 0 0 16-3584
+chrM 2479 0 0 0 0 0 0 0 16-3584
+chrM 2480 0 0 0 0 0 0 0 16-3584
+chrM 2481 0 0 0 0 0 0 0 16-3584
+chrM 2482 0 0 0 0 0 0 0 16-3584
+chrM 2483 0 0 0 0 0 0 0 16-3584
+chrM 2484 0 0 0 0 0 0 0 16-3584
+chrM 2485 0 0 0 0 0 0 0 16-3584
+chrM 2486 0 0 0 0 0 0 0 16-3584
+chrM 2487 0 0 0 0 0 0 0 16-3584
+chrM 2488 0 0 0 0 0 0 0 16-3584
+chrM 2489 0 0 0 0 0 0 0 16-3584
+chrM 2490 0 0 0 0 0 0 0 16-3584
+chrM 2491 0 0 0 0 0 0 0 16-3584
+chrM 2492 0 0 0 0 0 0 0 16-3584
+chrM 2493 0 0 0 0 0 0 0 16-3584
+chrM 2494 0 0 0 0 0 0 0 16-3584
+chrM 2495 0 0 0 0 0 0 0 16-3584
+chrM 2496 0 0 0 0 0 0 0 16-3584
+chrM 2497 0 0 0 0 0 0 0 16-3584
+chrM 2498 0 0 0 0 0 0 0 16-3584
+chrM 2499 0 0 0 0 0 0 0 16-3584
+chrM 2500 0 0 0 0 0 0 0 16-3584
+chrM 2501 0 0 0 0 0 0 0 16-3584
+chrM 2502 0 0 0 0 0 0 0 16-3584
+chrM 2503 0 0 0 0 0 0 0 16-3584
+chrM 2504 0 0 0 0 0 0 0 16-3584
+chrM 2505 0 0 0 0 0 0 0 16-3584
+chrM 2506 0 0 0 0 0 0 0 16-3584
+chrM 2507 0 0 0 0 0 0 0 16-3584
+chrM 2508 0 0 0 0 0 0 0 16-3584
+chrM 2509 0 0 0 0 0 0 0 16-3584
+chrM 2510 0 0 0 0 0 0 0 16-3584
+chrM 2511 0 0 0 0 0 0 0 16-3584
+chrM 2512 0 0 0 0 0 0 0 16-3584
+chrM 2513 0 0 0 0 0 0 0 16-3584
+chrM 2514 0 0 0 0 0 0 0 16-3584
+chrM 2515 0 0 0 0 0 0 0 16-3584
+chrM 2516 0 0 0 0 0 0 0 16-3584
+chrM 2517 0 0 0 0 0 0 0 16-3584
+chrM 2518 0 0 0 0 0 0 0 16-3584
+chrM 2519 0 0 0 0 0 0 0 16-3584
+chrM 2520 0 0 0 0 0 0 0 16-3584
+chrM 2521 0 0 0 0 0 0 0 16-3584
+chrM 2522 0 0 0 0 0 0 0 16-3584
+chrM 2523 0 0 0 0 0 0 0 16-3584
+chrM 2524 0 0 0 0 0 0 0 16-3584
+chrM 2525 0 0 0 0 0 0 0 16-3584
+chrM 2526 0 0 0 0 0 0 0 16-3584
+chrM 2527 0 0 0 0 0 0 0 16-3584
+chrM 2528 0 0 0 0 0 0 0 16-3584
+chrM 2529 0 0 0 0 0 0 0 16-3584
+chrM 2530 0 0 0 0 0 0 0 16-3584
+chrM 2531 0 0 0 0 0 0 0 16-3584
+chrM 2532 0 0 0 0 0 0 0 16-3584
+chrM 2533 0 0 0 0 0 0 0 16-3584
+chrM 2534 0 0 0 0 0 0 0 16-3584
+chrM 2535 0 0 0 0 0 0 0 16-3584
+chrM 2536 0 0 0 0 0 0 0 16-3584
+chrM 2537 0 0 0 0 0 0 0 16-3584
+chrM 2538 0 0 0 0 0 0 0 16-3584
+chrM 2539 0 0 0 0 0 0 0 16-3584
+chrM 2540 0 0 0 0 0 0 0 16-3584
+chrM 2541 0 0 0 0 0 0 0 16-3584
+chrM 2542 0 0 0 0 0 0 0 16-3584
+chrM 2543 0 0 0 0 0 0 0 16-3584
+chrM 2544 0 0 0 0 0 0 0 16-3584
+chrM 2545 0 0 0 0 0 0 0 16-3584
+chrM 2546 0 0 0 0 0 0 0 16-3584
+chrM 2547 0 0 0 0 0 0 0 16-3584
+chrM 2548 0 0 0 0 0 0 0 16-3584
+chrM 2549 0 0 0 0 0 0 0 16-3584
+chrM 2550 0 0 0 0 0 0 0 16-3584
+chrM 2551 0 0 0 0 0 0 0 16-3584
+chrM 2552 0 0 0 0 0 0 0 16-3584
+chrM 2553 0 0 0 0 0 0 0 16-3584
+chrM 2554 0 0 0 0 0 0 0 16-3584
+chrM 2555 0 0 0 0 0 0 0 16-3584
+chrM 2556 0 0 0 0 0 0 0 16-3584
+chrM 2557 0 0 0 0 0 0 0 16-3584
+chrM 2558 0 0 0 0 0 0 0 16-3584
+chrM 2559 0 0 0 0 0 0 0 16-3584
+chrM 2560 0 0 0 0 0 0 0 16-3584
+chrM 2561 0 0 0 0 0 0 0 16-3584
+chrM 2562 0 0 0 0 0 0 0 16-3584
+chrM 2563 0 0 0 0 0 0 0 16-3584
+chrM 2564 0 0 0 0 0 0 0 16-3584
+chrM 2565 0 0 0 0 0 0 0 16-3584
+chrM 2566 0 0 0 0 0 0 0 16-3584
+chrM 2567 0 0 0 0 0 0 0 16-3584
+chrM 2568 0 0 0 0 0 0 0 16-3584
+chrM 2569 0 0 0 0 0 0 0 16-3584
+chrM 2570 0 0 0 0 0 0 0 16-3584
+chrM 2571 0 0 0 0 0 0 0 16-3584
+chrM 2572 0 0 0 0 0 0 0 16-3584
+chrM 2573 0 0 0 0 0 0 0 16-3584
+chrM 2574 0 0 0 0 0 0 0 16-3584
+chrM 2575 0 0 0 0 0 0 0 16-3584
+chrM 2576 0 0 0 0 0 0 0 16-3584
+chrM 2577 0 0 0 0 0 0 0 16-3584
+chrM 2578 0 0 0 0 0 0 0 16-3584
+chrM 2579 0 0 0 0 0 0 0 16-3584
+chrM 2580 0 0 0 0 0 0 0 16-3584
+chrM 2581 0 0 0 0 0 0 0 16-3584
+chrM 2582 0 0 0 0 0 0 0 16-3584
+chrM 2583 0 0 0 0 0 0 0 16-3584
+chrM 2584 0 0 0 0 0 0 0 16-3584
+chrM 2585 0 0 0 0 0 0 0 16-3584
+chrM 2586 0 0 0 0 0 0 0 16-3584
+chrM 2587 0 0 0 0 0 0 0 16-3584
+chrM 2588 0 0 0 0 0 0 0 16-3584
+chrM 2589 0 0 0 0 0 0 0 16-3584
+chrM 2590 0 0 0 0 0 0 0 16-3584
+chrM 2591 0 0 0 0 0 0 0 16-3584
+chrM 2592 0 0 0 0 0 0 0 16-3584
+chrM 2593 0 0 0 0 0 0 0 16-3584
+chrM 2594 0 0 0 0 0 0 0 16-3584
+chrM 2595 0 0 0 0 0 0 0 16-3584
+chrM 2596 0 0 0 0 0 0 0 16-3584
+chrM 2597 0 0 0 0 0 0 0 16-3584
+chrM 2598 0 0 0 0 0 0 0 16-3584
+chrM 2599 0 0 0 0 0 0 0 16-3584
+chrM 2600 0 0 0 0 0 0 0 16-3584
+chrM 2601 0 0 0 0 0 0 0 16-3584
+chrM 2602 0 0 0 0 0 0 0 16-3584
+chrM 2603 0 0 0 0 0 0 0 16-3584
+chrM 2604 0 0 0 0 0 0 0 16-3584
+chrM 2605 0 0 0 0 0 0 0 16-3584
+chrM 2606 0 0 0 0 0 0 0 16-3584
+chrM 2607 0 0 0 0 0 0 0 16-3584
+chrM 2608 0 0 0 0 0 0 0 16-3584
+chrM 2609 0 0 0 0 0 0 0 16-3584
+chrM 2610 0 0 0 0 0 0 0 16-3584
+chrM 2611 0 0 0 0 0 0 0 16-3584
+chrM 2612 0 0 0 0 0 0 0 16-3584
+chrM 2613 0 0 0 0 0 0 0 16-3584
+chrM 2614 0 0 0 0 0 0 0 16-3584
+chrM 2615 0 0 0 0 0 0 0 16-3584
+chrM 2616 0 0 0 0 0 0 0 16-3584
+chrM 2617 0 0 0 0 0 0 0 16-3584
+chrM 2618 0 0 0 0 0 0 0 16-3584
+chrM 2619 0 0 0 0 0 0 0 16-3584
+chrM 2620 0 0 0 0 0 0 0 16-3584
+chrM 2621 0 0 0 0 0 0 0 16-3584
+chrM 2622 0 0 0 0 0 0 0 16-3584
+chrM 2623 0 0 0 0 0 0 0 16-3584
+chrM 2624 0 0 0 0 0 0 0 16-3584
+chrM 2625 0 0 0 0 0 0 0 16-3584
+chrM 2626 0 0 0 0 0 0 0 16-3584
+chrM 2627 0 0 0 0 0 0 0 16-3584
+chrM 2628 0 0 0 0 0 0 0 16-3584
+chrM 2629 0 0 0 0 0 0 0 16-3584
+chrM 2630 0 0 0 0 0 0 0 16-3584
+chrM 2631 0 0 0 0 0 0 0 16-3584
+chrM 2632 0 0 0 0 0 0 0 16-3584
+chrM 2633 0 0 0 0 0 0 0 16-3584
+chrM 2634 0 0 0 0 0 0 0 16-3584
+chrM 2635 0 0 0 0 0 0 0 16-3584
+chrM 2636 0 0 0 0 0 0 0 16-3584
+chrM 2637 0 0 0 0 0 0 0 16-3584
+chrM 2638 0 0 0 0 0 0 0 16-3584
+chrM 2639 0 0 0 0 0 0 0 16-3584
+chrM 2640 0 0 0 0 0 0 0 16-3584
+chrM 2641 0 0 0 0 0 0 0 16-3584
+chrM 2642 0 0 0 0 0 0 0 16-3584
+chrM 2643 0 0 0 0 0 0 0 16-3584
+chrM 2644 0 0 0 0 0 0 0 16-3584
+chrM 2645 0 0 0 0 0 0 0 16-3584
+chrM 2646 0 0 0 0 0 0 0 16-3584
+chrM 2647 0 0 0 0 0 0 0 16-3584
+chrM 2648 0 0 0 0 0 0 0 16-3584
+chrM 2649 0 0 0 0 0 0 0 16-3584
+chrM 2650 0 0 0 0 0 0 0 16-3584
+chrM 2651 0 0 0 0 0 0 0 16-3584
+chrM 2652 0 0 0 0 0 0 0 16-3584
+chrM 2653 0 0 0 0 0 0 0 16-3584
+chrM 2654 0 0 0 0 0 0 0 16-3584
+chrM 2655 0 0 0 0 0 0 0 16-3584
+chrM 2656 0 0 0 0 0 0 0 16-3584
+chrM 2657 0 0 0 0 0 0 0 16-3584
+chrM 2658 0 0 0 0 0 0 0 16-3584
+chrM 2659 0 0 0 0 0 0 0 16-3584
+chrM 2660 0 0 0 0 0 0 0 16-3584
+chrM 2661 0 0 0 0 0 0 0 16-3584
+chrM 2662 0 0 0 0 0 0 0 16-3584
+chrM 2663 0 0 0 0 0 0 0 16-3584
+chrM 2664 0 0 0 0 0 0 0 16-3584
+chrM 2665 0 0 0 0 0 0 0 16-3584
+chrM 2666 0 0 0 0 0 0 0 16-3584
+chrM 2667 0 0 0 0 0 0 0 16-3584
+chrM 2668 0 0 0 0 0 0 0 16-3584
+chrM 2669 0 0 0 0 0 0 0 16-3584
+chrM 2670 0 0 0 0 0 0 0 16-3584
+chrM 2671 0 0 0 0 0 0 0 16-3584
+chrM 2672 0 0 0 0 0 0 0 16-3584
+chrM 2673 0 0 0 0 0 0 0 16-3584
+chrM 2674 0 0 0 0 0 0 0 16-3584
+chrM 2675 0 0 0 0 0 0 0 16-3584
+chrM 2676 0 0 0 0 0 0 0 16-3584
+chrM 2677 0 0 0 0 0 0 0 16-3584
+chrM 2678 0 0 0 0 0 0 0 16-3584
+chrM 2679 0 0 0 0 0 0 0 16-3584
+chrM 2680 0 0 0 0 0 0 0 16-3584
+chrM 2681 0 0 0 0 0 0 0 16-3584
+chrM 2682 0 0 0 0 0 0 0 16-3584
+chrM 2683 0 0 0 0 0 0 0 16-3584
+chrM 2684 0 0 0 0 0 0 0 16-3584
+chrM 2685 0 0 0 0 0 0 0 16-3584
+chrM 2686 0 0 0 0 0 0 0 16-3584
+chrM 2687 0 0 0 0 0 0 0 16-3584
+chrM 2688 0 0 0 0 0 0 0 16-3584
+chrM 2689 0 0 0 0 0 0 0 16-3584
+chrM 2690 0 0 0 0 0 0 0 16-3584
+chrM 2691 0 0 0 0 0 0 0 16-3584
+chrM 2692 0 0 0 0 0 0 0 16-3584
+chrM 2693 0 0 0 0 0 0 0 16-3584
+chrM 2694 0 0 0 0 0 0 0 16-3584
+chrM 2695 0 0 0 0 0 0 0 16-3584
+chrM 2696 0 0 0 0 0 0 0 16-3584
+chrM 2697 0 0 0 0 0 0 0 16-3584
+chrM 2698 0 0 0 0 0 0 0 16-3584
+chrM 2699 0 0 0 0 0 0 0 16-3584
+chrM 2700 0 0 0 0 0 0 0 16-3584
+chrM 2701 0 0 0 0 0 0 0 16-3584
+chrM 2702 0 0 0 0 0 0 0 16-3584
+chrM 2703 0 0 0 0 0 0 0 16-3584
+chrM 2704 0 0 0 0 0 0 0 16-3584
+chrM 2705 0 0 0 0 0 0 0 16-3584
+chrM 2706 0 0 0 0 0 0 0 16-3584
+chrM 2707 0 0 0 0 0 0 0 16-3584
+chrM 2708 0 0 0 0 0 0 0 16-3584
+chrM 2709 0 0 0 0 0 0 0 16-3584
+chrM 2710 0 0 0 0 0 0 0 16-3584
+chrM 2711 0 0 0 0 0 0 0 16-3584
+chrM 2712 0 0 0 0 0 0 0 16-3584
+chrM 2713 0 0 0 0 0 0 0 16-3584
+chrM 2714 0 0 0 0 0 0 0 16-3584
+chrM 2715 0 0 0 0 0 0 0 16-3584
+chrM 2716 0 0 0 0 0 0 0 16-3584
+chrM 2717 0 0 0 0 0 0 0 16-3584
+chrM 2718 0 0 0 0 0 0 0 16-3584
+chrM 2719 0 0 0 0 0 0 0 16-3584
+chrM 2720 0 0 0 0 0 0 0 16-3584
+chrM 2721 0 0 0 0 0 0 0 16-3584
+chrM 2722 0 0 0 0 0 0 0 16-3584
+chrM 2723 0 0 0 0 0 0 0 16-3584
+chrM 2724 0 0 0 0 0 0 0 16-3584
+chrM 2725 0 0 0 0 0 0 0 16-3584
+chrM 2726 0 0 0 0 0 0 0 16-3584
+chrM 2727 0 0 0 0 0 0 0 16-3584
+chrM 2728 0 0 0 0 0 0 0 16-3584
+chrM 2729 0 0 0 0 0 0 0 16-3584
+chrM 2730 0 0 0 0 0 0 0 16-3584
+chrM 2731 0 0 0 0 0 0 0 16-3584
+chrM 2732 0 0 0 0 0 0 0 16-3584
+chrM 2733 0 0 0 0 0 0 0 16-3584
+chrM 2734 0 0 0 0 0 0 0 16-3584
+chrM 2735 0 0 0 0 0 0 0 16-3584
+chrM 2736 0 0 0 0 0 0 0 16-3584
+chrM 2737 0 0 0 0 0 0 0 16-3584
+chrM 2738 0 0 0 0 0 0 0 16-3584
+chrM 2739 0 0 0 0 0 0 0 16-3584
+chrM 2740 0 0 0 0 0 0 0 16-3584
+chrM 2741 0 0 0 0 0 0 0 16-3584
+chrM 2742 0 0 0 0 0 0 0 16-3584
+chrM 2743 0 0 0 0 0 0 0 16-3584
+chrM 2744 0 0 0 0 0 0 0 16-3584
+chrM 2745 0 0 0 0 0 0 0 16-3584
+chrM 2746 0 0 0 0 0 0 0 16-3584
+chrM 2747 0 0 0 0 0 0 0 16-3584
+chrM 2748 0 0 0 0 0 0 0 16-3584
+chrM 2749 0 0 0 0 0 0 0 16-3584
+chrM 2750 0 0 0 0 0 0 0 16-3584
+chrM 2751 0 0 0 0 0 0 0 16-3584
+chrM 2752 0 0 0 0 0 0 0 16-3584
+chrM 2753 0 0 0 0 0 0 0 16-3584
+chrM 2754 0 0 0 0 0 0 0 16-3584
+chrM 2755 0 0 0 0 0 0 0 16-3584
+chrM 2756 0 0 0 0 0 0 0 16-3584
+chrM 2757 0 0 0 0 0 0 0 16-3584
+chrM 2758 0 0 0 0 0 0 0 16-3584
+chrM 2759 0 0 0 0 0 0 0 16-3584
+chrM 2760 0 0 0 0 0 0 0 16-3584
+chrM 2761 0 0 0 0 0 0 0 16-3584
+chrM 2762 0 0 0 0 0 0 0 16-3584
+chrM 2763 0 0 0 0 0 0 0 16-3584
+chrM 2764 0 0 0 0 0 0 0 16-3584
+chrM 2765 0 0 0 0 0 0 0 16-3584
+chrM 2766 0 0 0 0 0 0 0 16-3584
+chrM 2767 0 0 0 0 0 0 0 16-3584
+chrM 2768 0 0 0 0 0 0 0 16-3584
+chrM 2769 0 0 0 0 0 0 0 16-3584
+chrM 2770 0 0 0 0 0 0 0 16-3584
+chrM 2771 0 0 0 0 0 0 0 16-3584
+chrM 2772 0 0 0 0 0 0 0 16-3584
+chrM 2773 0 0 0 0 0 0 0 16-3584
+chrM 2774 0 0 0 0 0 0 0 16-3584
+chrM 2775 0 0 0 0 0 0 0 16-3584
+chrM 2776 0 0 0 0 0 0 0 16-3584
+chrM 2777 0 0 0 0 0 0 0 16-3584
+chrM 2778 0 0 0 0 0 0 0 16-3584
+chrM 2779 0 0 0 0 0 0 0 16-3584
+chrM 2780 0 0 0 0 0 0 0 16-3584
+chrM 2781 0 0 0 0 0 0 0 16-3584
+chrM 2782 0 0 0 0 0 0 0 16-3584
+chrM 2783 0 0 0 0 0 0 0 16-3584
+chrM 2784 0 0 0 0 0 0 0 16-3584
+chrM 2785 0 0 0 0 0 0 0 16-3584
+chrM 2786 0 0 0 0 0 0 0 16-3584
+chrM 2787 0 0 0 0 0 0 0 16-3584
+chrM 2788 0 0 0 0 0 0 0 16-3584
+chrM 2789 0 0 0 0 0 0 0 16-3584
+chrM 2790 0 0 0 0 0 0 0 16-3584
+chrM 2791 0 0 0 0 0 0 0 16-3584
+chrM 2792 0 0 0 0 0 0 0 16-3584
+chrM 2793 0 0 0 0 0 0 0 16-3584
+chrM 2794 0 0 0 0 0 0 0 16-3584
+chrM 2795 0 0 0 0 0 0 0 16-3584
+chrM 2796 0 0 0 0 0 0 0 16-3584
+chrM 2797 0 0 0 0 0 0 0 16-3584
+chrM 2798 0 0 0 0 0 0 0 16-3584
+chrM 2799 0 0 0 0 0 0 0 16-3584
+chrM 2800 0 0 0 0 0 0 0 16-3584
+chrM 2801 0 0 0 0 0 0 0 16-3584
+chrM 2802 0 0 0 0 0 0 0 16-3584
+chrM 2803 0 0 0 0 0 0 0 16-3584
+chrM 2804 0 0 0 0 0 0 0 16-3584
+chrM 2805 0 0 0 0 0 0 0 16-3584
+chrM 2806 0 0 0 0 0 0 0 16-3584
+chrM 2807 0 0 0 0 0 0 0 16-3584
+chrM 2808 0 0 0 0 0 0 0 16-3584
+chrM 2809 0 0 0 0 0 0 0 16-3584
+chrM 2810 0 0 0 0 0 0 0 16-3584
+chrM 2811 0 0 0 0 0 0 0 16-3584
+chrM 2812 0 0 0 0 0 0 0 16-3584
+chrM 2813 0 0 0 0 0 0 0 16-3584
+chrM 2814 0 0 0 0 0 0 0 16-3584
+chrM 2815 0 0 0 0 0 0 0 16-3584
+chrM 2816 0 0 0 0 0 0 0 16-3584
+chrM 2817 0 0 0 0 0 0 0 16-3584
+chrM 2818 0 0 0 0 0 0 0 16-3584
+chrM 2819 0 0 0 0 0 0 0 16-3584
+chrM 2820 0 0 0 0 0 0 0 16-3584
+chrM 2821 0 0 0 0 0 0 0 16-3584
+chrM 2822 0 0 0 0 0 0 0 16-3584
+chrM 2823 0 0 0 0 0 0 0 16-3584
+chrM 2824 0 0 0 0 0 0 0 16-3584
+chrM 2825 0 0 0 0 0 0 0 16-3584
+chrM 2826 0 0 0 0 0 0 0 16-3584
+chrM 2827 0 0 0 0 0 0 0 16-3584
+chrM 2828 0 0 0 0 0 0 0 16-3584
+chrM 2829 0 0 0 0 0 0 0 16-3584
+chrM 2830 0 0 0 0 0 0 0 16-3584
+chrM 2831 0 0 0 0 0 0 0 16-3584
+chrM 2832 0 0 0 0 0 0 0 16-3584
+chrM 2833 0 0 0 0 0 0 0 16-3584
+chrM 2834 0 0 0 0 0 0 0 16-3584
+chrM 2835 0 0 0 0 0 0 0 16-3584
+chrM 2836 0 0 0 0 0 0 0 16-3584
+chrM 2837 0 0 0 0 0 0 0 16-3584
+chrM 2838 0 0 0 0 0 0 0 16-3584
+chrM 2839 0 0 0 0 0 0 0 16-3584
+chrM 2840 0 0 0 0 0 0 0 16-3584
+chrM 2841 0 0 0 0 0 0 0 16-3584
+chrM 2842 0 0 0 0 0 0 0 16-3584
+chrM 2843 0 0 0 0 0 0 0 16-3584
+chrM 2844 0 0 0 0 0 0 0 16-3584
+chrM 2845 0 0 0 0 0 0 0 16-3584
+chrM 2846 0 0 0 0 0 0 0 16-3584
+chrM 2847 0 0 0 0 0 0 0 16-3584
+chrM 2848 0 0 0 0 0 0 0 16-3584
+chrM 2849 0 0 0 0 0 0 0 16-3584
+chrM 2850 0 0 0 0 0 0 0 16-3584
+chrM 2851 0 0 0 0 0 0 0 16-3584
+chrM 2852 0 0 0 0 0 0 0 16-3584
+chrM 2853 0 0 0 0 0 0 0 16-3584
+chrM 2854 0 0 0 0 0 0 0 16-3584
+chrM 2855 0 0 0 0 0 0 0 16-3584
+chrM 2856 0 0 0 0 0 0 0 16-3584
+chrM 2857 0 0 0 0 0 0 0 16-3584
+chrM 2858 0 0 0 0 0 0 0 16-3584
+chrM 2859 0 0 0 0 0 0 0 16-3584
+chrM 2860 0 0 0 0 0 0 0 16-3584
+chrM 2861 0 0 0 0 0 0 0 16-3584
+chrM 2862 0 0 0 0 0 0 0 16-3584
+chrM 2863 0 0 0 0 0 0 0 16-3584
+chrM 2864 0 0 0 0 0 0 0 16-3584
+chrM 2865 0 0 0 0 0 0 0 16-3584
+chrM 2866 0 0 0 0 0 0 0 16-3584
+chrM 2867 0 0 0 0 0 0 0 16-3584
+chrM 2868 0 0 0 0 0 0 0 16-3584
+chrM 2869 0 0 0 0 0 0 0 16-3584
+chrM 2870 0 0 0 0 0 0 0 16-3584
+chrM 2871 0 0 0 0 0 0 0 16-3584
+chrM 2872 0 0 0 0 0 0 0 16-3584
+chrM 2873 0 0 0 0 0 0 0 16-3584
+chrM 2874 0 0 0 0 0 0 0 16-3584
+chrM 2875 0 0 0 0 0 0 0 16-3584
+chrM 2876 0 0 0 0 0 0 0 16-3584
+chrM 2877 0 0 0 0 0 0 0 16-3584
+chrM 2878 0 0 0 0 0 0 0 16-3584
+chrM 2879 0 0 0 0 0 0 0 16-3584
+chrM 2880 0 0 0 0 0 0 0 16-3584
+chrM 2881 0 0 0 0 0 0 0 16-3584
+chrM 2882 0 0 0 0 0 0 0 16-3584
+chrM 2883 0 0 0 0 0 0 0 16-3584
+chrM 2884 0 0 0 0 0 0 0 16-3584
+chrM 2885 0 0 0 0 0 0 0 16-3584
+chrM 2886 0 0 0 0 0 0 0 16-3584
+chrM 2887 0 0 0 0 0 0 0 16-3584
+chrM 2888 0 0 0 0 0 0 0 16-3584
+chrM 2889 0 0 0 0 0 0 0 16-3584
+chrM 2890 0 0 0 0 0 0 0 16-3584
+chrM 2891 0 0 0 0 0 0 0 16-3584
+chrM 2892 0 0 0 0 0 0 0 16-3584
+chrM 2893 0 0 0 0 0 0 0 16-3584
+chrM 2894 0 0 0 0 0 0 0 16-3584
+chrM 2895 0 0 0 0 0 0 0 16-3584
+chrM 2896 0 0 0 0 0 0 0 16-3584
+chrM 2897 0 0 0 0 0 0 0 16-3584
+chrM 2898 0 0 0 0 0 0 0 16-3584
+chrM 2899 0 0 0 0 0 0 0 16-3584
+chrM 2900 0 0 0 0 0 0 0 16-3584
+chrM 2901 0 0 0 0 0 0 0 16-3584
+chrM 2902 0 0 0 0 0 0 0 16-3584
+chrM 2903 0 0 0 0 0 0 0 16-3584
+chrM 2904 0 0 0 0 0 0 0 16-3584
+chrM 2905 0 0 0 0 0 0 0 16-3584
+chrM 2906 0 0 0 0 0 0 0 16-3584
+chrM 2907 0 0 0 0 0 0 0 16-3584
+chrM 2908 0 0 0 0 0 0 0 16-3584
+chrM 2909 0 0 0 0 0 0 0 16-3584
+chrM 2910 0 0 0 0 0 0 0 16-3584
+chrM 2911 0 0 0 0 0 0 0 16-3584
+chrM 2912 0 0 0 0 0 0 0 16-3584
+chrM 2913 0 0 0 0 0 0 0 16-3584
+chrM 2914 0 0 0 0 0 0 0 16-3584
+chrM 2915 0 0 0 0 0 0 0 16-3584
+chrM 2916 0 0 0 0 0 0 0 16-3584
+chrM 2917 0 0 0 0 0 0 0 16-3584
+chrM 2918 0 0 0 0 0 0 0 16-3584
+chrM 2919 0 0 0 0 0 0 0 16-3584
+chrM 2920 0 0 0 0 0 0 0 16-3584
+chrM 2921 0 0 0 0 0 0 0 16-3584
+chrM 2922 0 0 0 0 0 0 0 16-3584
+chrM 2923 0 0 0 0 0 0 0 16-3584
+chrM 2924 0 0 0 0 0 0 0 16-3584
+chrM 2925 0 0 0 0 0 0 0 16-3584
+chrM 2926 0 0 0 0 0 0 0 16-3584
+chrM 2927 0 0 0 0 0 0 0 16-3584
+chrM 2928 0 0 0 0 0 0 0 16-3584
+chrM 2929 0 0 0 0 0 0 0 16-3584
+chrM 2930 0 0 0 0 0 0 0 16-3584
+chrM 2931 0 0 0 0 0 0 0 16-3584
+chrM 2932 0 0 0 0 0 0 0 16-3584
+chrM 2933 0 0 0 0 0 0 0 16-3584
+chrM 2934 0 0 0 0 0 0 0 16-3584
+chrM 2935 0 0 0 0 0 0 0 16-3584
+chrM 2936 0 0 0 0 0 0 0 16-3584
+chrM 2937 0 0 0 0 0 0 0 16-3584
+chrM 2938 0 0 0 0 0 0 0 16-3584
+chrM 2939 0 0 0 0 0 0 0 16-3584
+chrM 2940 0 0 0 0 0 0 0 16-3584
+chrM 2941 0 0 0 0 0 0 0 16-3584
+chrM 2942 0 0 0 0 0 0 0 16-3584
+chrM 2943 0 0 0 0 0 0 0 16-3584
+chrM 2944 0 0 0 0 0 0 0 16-3584
+chrM 2945 0 0 0 0 0 0 0 16-3584
+chrM 2946 0 0 0 0 0 0 0 16-3584
+chrM 2947 0 0 0 0 0 0 0 16-3584
+chrM 2948 0 0 0 0 0 0 0 16-3584
+chrM 2949 0 0 0 0 0 0 0 16-3584
+chrM 2950 0 0 0 0 0 0 0 16-3584
+chrM 2951 0 0 0 0 0 0 0 16-3584
+chrM 2952 0 0 0 0 0 0 0 16-3584
+chrM 2953 0 0 0 0 0 0 0 16-3584
+chrM 2954 0 0 0 0 0 0 0 16-3584
+chrM 2955 0 0 0 0 0 0 0 16-3584
+chrM 2956 0 0 0 0 0 0 0 16-3584
+chrM 2957 0 0 0 0 0 0 0 16-3584
+chrM 2958 0 0 0 0 0 0 0 16-3584
+chrM 2959 0 0 0 0 0 0 0 16-3584
+chrM 2960 0 0 0 0 0 0 0 16-3584
+chrM 2961 0 0 0 0 0 0 0 16-3584
+chrM 2962 0 0 0 0 0 0 0 16-3584
+chrM 2963 0 0 0 0 0 0 0 16-3584
+chrM 2964 0 0 0 0 0 0 0 16-3584
+chrM 2965 0 0 0 0 0 0 0 16-3584
+chrM 2966 0 0 0 0 0 0 0 16-3584
+chrM 2967 0 0 0 0 0 0 0 16-3584
+chrM 2968 0 0 0 0 0 0 0 16-3584
+chrM 2969 0 0 0 0 0 0 0 16-3584
+chrM 2970 0 0 0 0 0 0 0 16-3584
+chrM 2971 0 0 0 0 0 0 0 16-3584
+chrM 2972 0 0 0 0 0 0 0 16-3584
+chrM 2973 0 0 0 0 0 0 0 16-3584
+chrM 2974 0 0 0 0 0 0 0 16-3584
+chrM 2975 0 0 0 0 0 0 0 16-3584
+chrM 2976 0 0 0 0 0 0 0 16-3584
+chrM 2977 0 0 0 0 0 0 0 16-3584
+chrM 2978 0 0 0 0 0 0 0 16-3584
+chrM 2979 0 0 0 0 0 0 0 16-3584
+chrM 2980 0 0 0 0 0 0 0 16-3584
+chrM 2981 0 0 0 0 0 0 0 16-3584
+chrM 2982 0 0 0 0 0 0 0 16-3584
+chrM 2983 0 0 0 0 0 0 0 16-3584
+chrM 2984 0 0 0 0 0 0 0 16-3584
+chrM 2985 0 0 0 0 0 0 0 16-3584
+chrM 2986 0 0 0 0 0 0 0 16-3584
+chrM 2987 0 0 0 0 0 0 0 16-3584
+chrM 2988 0 0 0 0 0 0 0 16-3584
+chrM 2989 0 0 0 0 0 0 0 16-3584
+chrM 2990 0 0 0 0 0 0 0 16-3584
+chrM 2991 0 0 0 0 0 0 0 16-3584
+chrM 2992 0 0 0 0 0 0 0 16-3584
+chrM 2993 0 0 0 0 0 0 0 16-3584
+chrM 2994 0 0 0 0 0 0 0 16-3584
+chrM 2995 0 0 0 0 0 0 0 16-3584
+chrM 2996 0 0 0 0 0 0 0 16-3584
+chrM 2997 0 0 0 0 0 0 0 16-3584
+chrM 2998 0 0 0 0 0 0 0 16-3584
+chrM 2999 0 0 0 0 0 0 0 16-3584
+chrM 3000 0 0 0 0 0 0 0 16-3584
+chrM 3001 0 0 0 0 0 0 0 16-3584
+chrM 3002 0 0 0 0 0 0 0 16-3584
+chrM 3003 0 0 0 0 0 0 0 16-3584
+chrM 3004 0 0 0 0 0 0 0 16-3584
+chrM 3005 0 0 0 0 0 0 0 16-3584
+chrM 3006 0 0 0 0 0 0 0 16-3584
+chrM 3007 0 0 0 0 0 0 0 16-3584
+chrM 3008 0 0 0 0 0 0 0 16-3584
+chrM 3009 0 0 0 0 0 0 0 16-3584
+chrM 3010 0 0 0 0 0 0 0 16-3584
+chrM 3011 0 0 0 0 0 0 0 16-3584
+chrM 3012 0 0 0 0 0 0 0 16-3584
+chrM 3013 0 0 0 0 0 0 0 16-3584
+chrM 3014 0 0 0 0 0 0 0 16-3584
+chrM 3015 0 0 0 0 0 0 0 16-3584
+chrM 3016 0 0 0 0 0 0 0 16-3584
+chrM 3017 0 0 0 0 0 0 0 16-3584
+chrM 3018 0 0 0 0 0 0 0 16-3584
+chrM 3019 0 0 0 0 0 0 0 16-3584
+chrM 3020 0 0 0 0 0 0 0 16-3584
+chrM 3021 0 0 0 0 0 0 0 16-3584
+chrM 3022 0 0 0 0 0 0 0 16-3584
+chrM 3023 0 0 0 0 0 0 0 16-3584
+chrM 3024 0 0 0 0 0 0 0 16-3584
+chrM 3025 0 0 0 0 0 0 0 16-3584
+chrM 3026 0 0 0 0 0 0 0 16-3584
+chrM 3027 0 0 0 0 0 0 0 16-3584
+chrM 3028 0 0 0 0 0 0 0 16-3584
+chrM 3029 0 0 0 0 0 0 0 16-3584
+chrM 3030 0 0 0 0 0 0 0 16-3584
+chrM 3031 0 0 0 0 0 0 0 16-3584
+chrM 3032 0 0 0 0 0 0 0 16-3584
+chrM 3033 0 0 0 0 0 0 0 16-3584
+chrM 3034 0 0 0 0 0 0 0 16-3584
+chrM 3035 0 0 0 0 0 0 0 16-3584
+chrM 3036 0 0 0 0 0 0 0 16-3584
+chrM 3037 0 0 0 0 0 0 0 16-3584
+chrM 3038 0 0 0 0 0 0 0 16-3584
+chrM 3039 0 0 0 0 0 0 0 16-3584
+chrM 3040 0 0 0 0 0 0 0 16-3584
+chrM 3041 0 0 0 0 0 0 0 16-3584
+chrM 3042 0 0 0 0 0 0 0 16-3584
+chrM 3043 0 0 0 0 0 0 0 16-3584
+chrM 3044 0 0 0 0 0 0 0 16-3584
+chrM 3045 0 0 0 0 0 0 0 16-3584
+chrM 3046 0 0 0 0 0 0 0 16-3584
+chrM 3047 0 0 0 0 0 0 0 16-3584
+chrM 3048 0 0 0 0 0 0 0 16-3584
+chrM 3049 0 0 0 0 0 0 0 16-3584
+chrM 3050 0 0 0 0 0 0 0 16-3584
+chrM 3051 0 0 0 0 0 0 0 16-3584
+chrM 3052 0 0 0 0 0 0 0 16-3584
+chrM 3053 0 0 0 0 0 0 0 16-3584
+chrM 3054 0 0 0 0 0 0 0 16-3584
+chrM 3055 0 0 0 0 0 0 0 16-3584
+chrM 3056 0 0 0 0 0 0 0 16-3584
+chrM 3057 0 0 0 0 0 0 0 16-3584
+chrM 3058 0 0 0 0 0 0 0 16-3584
+chrM 3059 0 0 0 0 0 0 0 16-3584
+chrM 3060 0 0 0 0 0 0 0 16-3584
+chrM 3061 0 0 0 0 0 0 0 16-3584
+chrM 3062 0 0 0 0 0 0 0 16-3584
+chrM 3063 0 0 0 0 0 0 0 16-3584
+chrM 3064 0 0 0 0 0 0 0 16-3584
+chrM 3065 0 0 0 0 0 0 0 16-3584
+chrM 3066 0 0 0 0 0 0 0 16-3584
+chrM 3067 0 0 0 0 0 0 0 16-3584
+chrM 3068 0 0 0 0 0 0 0 16-3584
+chrM 3069 0 0 0 0 0 0 0 16-3584
+chrM 3070 0 0 0 0 0 0 0 16-3584
+chrM 3071 0 0 0 0 0 0 0 16-3584
+chrM 3072 0 0 0 0 0 0 0 16-3584
+chrM 3073 0 0 0 0 0 0 0 16-3584
+chrM 3074 0 0 0 0 0 0 0 16-3584
+chrM 3075 0 0 0 0 0 0 0 16-3584
+chrM 3076 0 0 0 0 0 0 0 16-3584
+chrM 3077 0 0 0 0 0 0 0 16-3584
+chrM 3078 0 0 0 0 0 0 0 16-3584
+chrM 3079 0 0 0 0 0 0 0 16-3584
+chrM 3080 0 0 0 0 0 0 0 16-3584
+chrM 3081 0 0 0 0 0 0 0 16-3584
+chrM 3082 0 0 0 0 0 0 0 16-3584
+chrM 3083 0 0 0 0 0 0 0 16-3584
+chrM 3084 0 0 0 0 0 0 0 16-3584
+chrM 3085 0 0 0 0 0 0 0 16-3584
+chrM 3086 0 0 0 0 0 0 0 16-3584
+chrM 3087 0 0 0 0 0 0 0 16-3584
+chrM 3088 0 0 0 0 0 0 0 16-3584
+chrM 3089 0 0 0 0 0 0 0 16-3584
+chrM 3090 0 0 0 0 0 0 0 16-3584
+chrM 3091 0 0 0 0 0 0 0 16-3584
+chrM 3092 0 0 0 0 0 0 0 16-3584
+chrM 3093 0 0 0 0 0 0 0 16-3584
+chrM 3094 0 0 0 0 0 0 0 16-3584
+chrM 3095 0 0 0 0 0 0 0 16-3584
+chrM 3096 0 0 0 0 0 0 0 16-3584
+chrM 3097 0 0 0 0 0 0 0 16-3584
+chrM 3098 0 0 0 0 0 0 0 16-3584
+chrM 3099 0 0 0 0 0 0 0 16-3584
+chrM 3100 0 0 0 0 0 0 0 16-3584
+chrM 3101 0 0 0 0 0 0 0 16-3584
+chrM 3102 0 0 0 0 0 0 0 16-3584
+chrM 3103 0 0 0 0 0 0 0 16-3584
+chrM 3104 0 0 0 0 0 0 0 16-3584
+chrM 3105 0 0 0 0 0 0 0 16-3584
+chrM 3106 0 0 0 0 0 0 0 16-3584
+chrM 3107 0 0 0 0 0 0 0 16-3584
+chrM 3108 0 0 0 0 0 0 0 16-3584
+chrM 3109 0 0 0 0 0 0 0 16-3584
+chrM 3110 0 0 0 0 0 0 0 16-3584
+chrM 3111 0 0 0 0 0 0 0 16-3584
+chrM 3112 0 0 0 0 0 0 0 16-3584
+chrM 3113 0 0 0 0 0 0 0 16-3584
+chrM 3114 0 0 0 0 0 0 0 16-3584
+chrM 3115 0 0 0 0 0 0 0 16-3584
+chrM 3116 0 0 0 0 0 0 0 16-3584
+chrM 3117 0 0 0 0 0 0 0 16-3584
+chrM 3118 0 0 0 0 0 0 0 16-3584
+chrM 3119 0 0 0 0 0 0 0 16-3584
+chrM 3120 0 0 0 0 0 0 0 16-3584
+chrM 3121 0 0 0 0 0 0 0 16-3584
+chrM 3122 0 0 0 0 0 0 0 16-3584
+chrM 3123 0 0 0 0 0 0 0 16-3584
+chrM 3124 0 0 0 0 0 0 0 16-3584
+chrM 3125 0 0 0 0 0 0 0 16-3584
+chrM 3126 0 0 0 0 0 0 0 16-3584
+chrM 3127 0 0 0 0 0 0 0 16-3584
+chrM 3128 0 0 0 0 0 0 0 16-3584
+chrM 3129 0 0 0 0 0 0 0 16-3584
+chrM 3130 0 0 0 0 0 0 0 16-3584
+chrM 3131 0 0 0 0 0 0 0 16-3584
+chrM 3132 0 0 0 0 0 0 0 16-3584
+chrM 3133 0 0 0 0 0 0 0 16-3584
+chrM 3134 0 0 0 0 0 0 0 16-3584
+chrM 3135 0 0 0 0 0 0 0 16-3584
+chrM 3136 0 0 0 0 0 0 0 16-3584
+chrM 3137 0 0 0 0 0 0 0 16-3584
+chrM 3138 0 0 0 0 0 0 0 16-3584
+chrM 3139 0 0 0 0 0 0 0 16-3584
+chrM 3140 0 0 0 0 0 0 0 16-3584
+chrM 3141 0 0 0 0 0 0 0 16-3584
+chrM 3142 0 0 0 0 0 0 0 16-3584
+chrM 3143 0 0 0 0 0 0 0 16-3584
+chrM 3144 0 0 0 0 0 0 0 16-3584
+chrM 3145 0 0 0 0 0 0 0 16-3584
+chrM 3146 0 0 0 0 0 0 0 16-3584
+chrM 3147 0 0 0 0 0 0 0 16-3584
+chrM 3148 0 0 0 0 0 0 0 16-3584
+chrM 3149 0 0 0 0 0 0 0 16-3584
+chrM 3150 0 0 0 0 0 0 0 16-3584
+chrM 3151 0 0 0 0 0 0 0 16-3584
+chrM 3152 0 0 0 0 0 0 0 16-3584
+chrM 3153 0 0 0 0 0 0 0 16-3584
+chrM 3154 0 0 0 0 0 0 0 16-3584
+chrM 3155 0 0 0 0 0 0 0 16-3584
+chrM 3156 0 0 0 0 0 0 0 16-3584
+chrM 3157 0 0 0 0 0 0 0 16-3584
+chrM 3158 0 0 0 0 0 0 0 16-3584
+chrM 3159 0 0 0 0 0 0 0 16-3584
+chrM 3160 0 0 0 0 0 0 0 16-3584
+chrM 3161 0 0 0 0 0 0 0 16-3584
+chrM 3162 0 0 0 0 0 0 0 16-3584
+chrM 3163 0 0 0 0 0 0 0 16-3584
+chrM 3164 0 0 0 0 0 0 0 16-3584
+chrM 3165 0 0 0 0 0 0 0 16-3584
+chrM 3166 0 0 0 0 0 0 0 16-3584
+chrM 3167 0 0 0 0 0 0 0 16-3584
+chrM 3168 0 0 0 0 0 0 0 16-3584
+chrM 3169 0 0 0 0 0 0 0 16-3584
+chrM 3170 0 0 0 0 0 0 0 16-3584
+chrM 3171 0 0 0 0 0 0 0 16-3584
+chrM 3172 0 0 0 0 0 0 0 16-3584
+chrM 3173 0 0 0 0 0 0 0 16-3584
+chrM 3174 0 0 0 0 0 0 0 16-3584
+chrM 3175 0 0 0 0 0 0 0 16-3584
+chrM 3176 0 0 0 0 0 0 0 16-3584
+chrM 3177 0 0 0 0 0 0 0 16-3584
+chrM 3178 0 0 0 0 0 0 0 16-3584
+chrM 3179 0 0 0 0 0 0 0 16-3584
+chrM 3180 0 0 0 0 0 0 0 16-3584
+chrM 3181 0 0 0 0 0 0 0 16-3584
+chrM 3182 0 0 0 0 0 0 0 16-3584
+chrM 3183 0 0 0 0 0 0 0 16-3584
+chrM 3184 0 0 0 0 0 0 0 16-3584
+chrM 3185 0 0 0 0 0 0 0 16-3584
+chrM 3186 0 0 0 0 0 0 0 16-3584
+chrM 3187 0 0 0 0 0 0 0 16-3584
+chrM 3188 0 0 0 0 0 0 0 16-3584
+chrM 3189 0 0 0 0 0 0 0 16-3584
+chrM 3190 0 0 0 0 0 0 0 16-3584
+chrM 3191 0 0 0 0 0 0 0 16-3584
+chrM 3192 0 0 0 0 0 0 0 16-3584
+chrM 3193 0 0 0 0 0 0 0 16-3584
+chrM 3194 0 0 0 0 0 0 0 16-3584
+chrM 3195 0 0 0 0 0 0 0 16-3584
+chrM 3196 0 0 0 0 0 0 0 16-3584
+chrM 3197 0 0 0 0 0 0 0 16-3584
+chrM 3198 0 0 0 0 0 0 0 16-3584
+chrM 3199 0 0 0 0 0 0 0 16-3584
+chrM 3200 0 0 0 0 0 0 0 16-3584
+chrM 3201 0 0 0 0 0 0 0 16-3584
+chrM 3202 0 0 0 0 0 0 0 16-3584
+chrM 3203 0 0 0 0 0 0 0 16-3584
+chrM 3204 0 0 0 0 0 0 0 16-3584
+chrM 3205 0 0 0 0 0 0 0 16-3584
+chrM 3206 0 0 0 0 0 0 0 16-3584
+chrM 3207 0 0 0 0 0 0 0 16-3584
+chrM 3208 0 0 0 0 0 0 0 16-3584
+chrM 3209 0 0 0 0 0 0 0 16-3584
+chrM 3210 0 0 0 0 0 0 0 16-3584
+chrM 3211 0 0 0 0 0 0 0 16-3584
+chrM 3212 0 0 0 0 0 0 0 16-3584
+chrM 3213 0 0 0 0 0 0 0 16-3584
+chrM 3214 0 0 0 0 0 0 0 16-3584
+chrM 3215 0 0 0 0 0 0 0 16-3584
+chrM 3216 0 0 0 0 0 0 0 16-3584
+chrM 3217 0 0 0 0 0 0 0 16-3584
+chrM 3218 0 0 0 0 0 0 0 16-3584
+chrM 3219 0 0 0 0 0 0 0 16-3584
+chrM 3220 0 0 0 0 0 0 0 16-3584
+chrM 3221 0 0 0 0 0 0 0 16-3584
+chrM 3222 0 0 0 0 0 0 0 16-3584
+chrM 3223 0 0 0 0 0 0 0 16-3584
+chrM 3224 0 0 0 0 0 0 0 16-3584
+chrM 3225 0 0 0 0 0 0 0 16-3584
+chrM 3226 0 0 0 0 0 0 0 16-3584
+chrM 3227 0 0 0 0 0 0 0 16-3584
+chrM 3228 0 0 0 0 0 0 0 16-3584
+chrM 3229 0 0 0 0 0 0 0 16-3584
+chrM 3230 0 0 0 0 0 0 0 16-3584
+chrM 3231 0 0 0 0 0 0 0 16-3584
+chrM 3232 0 0 0 0 0 0 0 16-3584
+chrM 3233 0 0 0 0 0 0 0 16-3584
+chrM 3234 0 0 0 0 0 0 0 16-3584
+chrM 3235 0 0 0 0 0 0 0 16-3584
+chrM 3236 0 0 0 0 0 0 0 16-3584
+chrM 3237 0 0 0 0 0 0 0 16-3584
+chrM 3238 0 0 0 0 0 0 0 16-3584
+chrM 3239 0 0 0 0 0 0 0 16-3584
+chrM 3240 0 0 0 0 0 0 0 16-3584
+chrM 3241 0 0 0 0 0 0 0 16-3584
+chrM 3242 0 0 0 0 0 0 0 16-3584
+chrM 3243 0 0 0 0 0 0 0 16-3584
+chrM 3244 0 0 0 0 0 0 0 16-3584
+chrM 3245 0 0 0 0 0 0 0 16-3584
+chrM 3246 0 0 0 0 0 0 0 16-3584
+chrM 3247 0 0 0 0 0 0 0 16-3584
+chrM 3248 0 0 0 0 0 0 0 16-3584
+chrM 3249 0 0 0 0 0 0 0 16-3584
+chrM 3250 0 0 0 0 0 0 0 16-3584
+chrM 3251 0 0 0 0 0 0 0 16-3584
+chrM 3252 0 0 0 0 0 0 0 16-3584
+chrM 3253 0 0 0 0 0 0 0 16-3584
+chrM 3254 0 0 0 0 0 0 0 16-3584
+chrM 3255 0 0 0 0 0 0 0 16-3584
+chrM 3256 0 0 0 0 0 0 0 16-3584
+chrM 3257 0 0 0 0 0 0 0 16-3584
+chrM 3258 0 0 0 0 0 0 0 16-3584
+chrM 3259 0 0 0 0 0 0 0 16-3584
+chrM 3260 0 0 0 0 0 0 0 16-3584
+chrM 3261 0 0 0 0 0 0 0 16-3584
+chrM 3262 0 0 0 0 0 0 0 16-3584
+chrM 3263 0 0 0 0 0 0 0 16-3584
+chrM 3264 0 0 0 0 0 0 0 16-3584
+chrM 3265 0 0 0 0 0 0 0 16-3584
+chrM 3266 0 0 0 0 0 0 0 16-3584
+chrM 3267 0 0 0 0 0 0 0 16-3584
+chrM 3268 0 0 0 0 0 0 0 16-3584
+chrM 3269 0 0 0 0 0 0 0 16-3584
+chrM 3270 0 0 0 0 0 0 0 16-3584
+chrM 3271 0 0 0 0 0 0 0 16-3584
+chrM 3272 0 0 0 0 0 0 0 16-3584
+chrM 3273 0 0 0 0 0 0 0 16-3584
+chrM 3274 0 0 0 0 0 0 0 16-3584
+chrM 3275 0 0 0 0 0 0 0 16-3584
+chrM 3276 0 0 0 0 0 0 0 16-3584
+chrM 3277 0 0 0 0 0 0 0 16-3584
+chrM 3278 0 0 0 0 0 0 0 16-3584
+chrM 3279 0 0 0 0 0 0 0 16-3584
+chrM 3280 0 0 0 0 0 0 0 16-3584
+chrM 3281 0 0 0 0 0 0 0 16-3584
+chrM 3282 0 0 0 0 0 0 0 16-3584
+chrM 3283 0 0 0 0 0 0 0 16-3584
+chrM 3284 0 0 0 0 0 0 0 16-3584
+chrM 3285 0 0 0 0 0 0 0 16-3584
+chrM 3286 0 0 0 0 0 0 0 16-3584
+chrM 3287 0 0 0 0 0 0 0 16-3584
+chrM 3288 0 0 0 0 0 0 0 16-3584
+chrM 3289 0 0 0 0 0 0 0 16-3584
+chrM 3290 0 0 0 0 0 0 0 16-3584
+chrM 3291 0 0 0 0 0 0 0 16-3584
+chrM 3292 0 0 0 0 0 0 0 16-3584
+chrM 3293 0 0 0 0 0 0 0 16-3584
+chrM 3294 0 0 0 0 0 0 0 16-3584
+chrM 3295 0 0 0 0 0 0 0 16-3584
+chrM 3296 0 0 0 0 0 0 0 16-3584
+chrM 3297 0 0 0 0 0 0 0 16-3584
+chrM 3298 0 0 0 0 0 0 0 16-3584
+chrM 3299 0 0 0 0 0 0 0 16-3584
+chrM 3300 0 0 0 0 0 0 0 16-3584
+chrM 3301 0 0 0 0 0 0 0 16-3584
+chrM 3302 0 0 0 0 0 0 0 16-3584
+chrM 3303 0 0 0 0 0 0 0 16-3584
+chrM 3304 0 0 0 0 0 0 0 16-3584
+chrM 3305 0 0 0 0 0 0 0 16-3584
+chrM 3306 0 0 0 0 0 0 0 16-3584
+chrM 3307 0 0 0 0 0 0 0 16-3584
+chrM 3308 0 0 0 0 0 0 0 16-3584
+chrM 3309 0 0 0 0 0 0 0 16-3584
+chrM 3310 0 0 0 0 0 0 0 16-3584
+chrM 3311 0 0 0 0 0 0 0 16-3584
+chrM 3312 0 0 0 0 0 0 0 16-3584
+chrM 3313 0 0 0 0 0 0 0 16-3584
+chrM 3314 0 0 0 0 0 0 0 16-3584
+chrM 3315 0 0 0 0 0 0 0 16-3584
+chrM 3316 0 0 0 0 0 0 0 16-3584
+chrM 3317 0 0 0 0 0 0 0 16-3584
+chrM 3318 0 0 0 0 0 0 0 16-3584
+chrM 3319 0 0 0 0 0 0 0 16-3584
+chrM 3320 0 0 0 0 0 0 0 16-3584
+chrM 3321 0 0 0 0 0 0 0 16-3584
+chrM 3322 0 0 0 0 0 0 0 16-3584
+chrM 3323 0 0 0 0 0 0 0 16-3584
+chrM 3324 0 0 0 0 0 0 0 16-3584
+chrM 3325 0 0 0 0 0 0 0 16-3584
+chrM 3326 0 0 0 0 0 0 0 16-3584
+chrM 3327 0 0 0 0 0 0 0 16-3584
+chrM 3328 0 0 0 0 0 0 0 16-3584
+chrM 3329 0 0 0 0 0 0 0 16-3584
+chrM 3330 0 0 0 0 0 0 0 16-3584
+chrM 3331 0 0 0 0 0 0 0 16-3584
+chrM 3332 0 0 0 0 0 0 0 16-3584
+chrM 3333 0 0 0 0 0 0 0 16-3584
+chrM 3334 0 0 0 0 0 0 0 16-3584
+chrM 3335 0 0 0 0 0 0 0 16-3584
+chrM 3336 0 0 0 0 0 0 0 16-3584
+chrM 3337 0 0 0 0 0 0 0 16-3584
+chrM 3338 0 0 0 0 0 0 0 16-3584
+chrM 3339 0 0 0 0 0 0 0 16-3584
+chrM 3340 0 0 0 0 0 0 0 16-3584
+chrM 3341 0 0 0 0 0 0 0 16-3584
+chrM 3342 0 0 0 0 0 0 0 16-3584
+chrM 3343 0 0 0 0 0 0 0 16-3584
+chrM 3344 0 0 0 0 0 0 0 16-3584
+chrM 3345 0 0 0 0 0 0 0 16-3584
+chrM 3346 0 0 0 0 0 0 0 16-3584
+chrM 3347 0 0 0 0 0 0 0 16-3584
+chrM 3348 0 0 0 0 0 0 0 16-3584
+chrM 3349 0 0 0 0 0 0 0 16-3584
+chrM 3350 0 0 0 0 0 0 0 16-3584
+chrM 3351 0 0 0 0 0 0 0 16-3584
+chrM 3352 0 0 0 0 0 0 0 16-3584
+chrM 3353 0 0 0 0 0 0 0 16-3584
+chrM 3354 0 0 0 0 0 0 0 16-3584
+chrM 3355 0 0 0 0 0 0 0 16-3584
+chrM 3356 0 0 0 0 0 0 0 16-3584
+chrM 3357 0 0 0 0 0 0 0 16-3584
+chrM 3358 0 0 0 0 0 0 0 16-3584
+chrM 3359 0 0 0 0 0 0 0 16-3584
+chrM 3360 0 0 0 0 0 0 0 16-3584
+chrM 3361 0 0 0 0 0 0 0 16-3584
+chrM 3362 0 0 0 0 0 0 0 16-3584
+chrM 3363 0 0 0 0 0 0 0 16-3584
+chrM 3364 0 0 0 0 0 0 0 16-3584
+chrM 3365 0 0 0 0 0 0 0 16-3584
+chrM 3366 0 0 0 0 0 0 0 16-3584
+chrM 3367 0 0 0 0 0 0 0 16-3584
+chrM 3368 0 0 0 0 0 0 0 16-3584
+chrM 3369 0 0 0 0 0 0 0 16-3584
+chrM 3370 0 0 0 0 0 0 0 16-3584
+chrM 3371 0 0 0 0 0 0 0 16-3584
+chrM 3372 0 0 0 0 0 0 0 16-3584
+chrM 3373 0 0 0 0 0 0 0 16-3584
+chrM 3374 0 0 0 0 0 0 0 16-3584
+chrM 3375 0 0 0 0 0 0 0 16-3584
+chrM 3376 0 0 0 0 0 0 0 16-3584
+chrM 3377 0 0 0 0 0 0 0 16-3584
+chrM 3378 0 0 0 0 0 0 0 16-3584
+chrM 3379 0 0 0 0 0 0 0 16-3584
+chrM 3380 0 0 0 0 0 0 0 16-3584
+chrM 3381 0 0 0 0 0 0 0 16-3584
+chrM 3382 0 0 0 0 0 0 0 16-3584
+chrM 3383 0 0 0 0 0 0 0 16-3584
+chrM 3384 0 0 0 0 0 0 0 16-3584
+chrM 3385 0 0 0 0 0 0 0 16-3584
+chrM 3386 0 0 0 0 0 0 0 16-3584
+chrM 3387 0 0 0 0 0 0 0 16-3584
+chrM 3388 0 0 0 0 0 0 0 16-3584
+chrM 3389 0 0 0 0 0 0 0 16-3584
+chrM 3390 0 0 0 0 0 0 0 16-3584
+chrM 3391 0 0 0 0 0 0 0 16-3584
+chrM 3392 0 0 0 0 0 0 0 16-3584
+chrM 3393 0 0 0 0 0 0 0 16-3584
+chrM 3394 0 0 0 0 0 0 0 16-3584
+chrM 3395 0 0 0 0 0 0 0 16-3584
+chrM 3396 0 0 0 0 0 0 0 16-3584
+chrM 3397 0 0 0 0 0 0 0 16-3584
+chrM 3398 0 0 0 0 0 0 0 16-3584
+chrM 3399 0 0 0 0 0 0 0 16-3584
+chrM 3400 0 0 0 0 0 0 0 16-3584
+chrM 3401 0 0 0 0 0 0 0 16-3584
+chrM 3402 0 0 0 0 0 0 0 16-3584
+chrM 3403 0 0 0 0 0 0 0 16-3584
+chrM 3404 0 0 0 0 0 0 0 16-3584
+chrM 3405 0 0 0 0 0 0 0 16-3584
+chrM 3406 0 0 0 0 0 0 0 16-3584
+chrM 3407 0 0 0 0 0 0 0 16-3584
+chrM 3408 0 0 0 0 0 0 0 16-3584
+chrM 3409 0 0 0 0 0 0 0 16-3584
+chrM 3410 0 0 0 0 0 0 0 16-3584
+chrM 3411 0 0 0 0 0 0 0 16-3584
+chrM 3412 0 0 0 0 0 0 0 16-3584
+chrM 3413 0 0 0 0 0 0 0 16-3584
+chrM 3414 0 0 0 0 0 0 0 16-3584
+chrM 3415 0 0 0 0 0 0 0 16-3584
+chrM 3416 0 0 0 0 0 0 0 16-3584
+chrM 3417 0 0 0 0 0 0 0 16-3584
+chrM 3418 0 0 0 0 0 0 0 16-3584
+chrM 3419 0 0 0 0 0 0 0 16-3584
+chrM 3420 0 0 0 0 0 0 0 16-3584
+chrM 3421 0 0 0 0 0 0 0 16-3584
+chrM 3422 0 0 0 0 0 0 0 16-3584
+chrM 3423 0 0 0 0 0 0 0 16-3584
+chrM 3424 0 0 0 0 0 0 0 16-3584
+chrM 3425 0 0 0 0 0 0 0 16-3584
+chrM 3426 0 0 0 0 0 0 0 16-3584
+chrM 3427 0 0 0 0 0 0 0 16-3584
+chrM 3428 0 0 0 0 0 0 0 16-3584
+chrM 3429 0 0 0 0 0 0 0 16-3584
+chrM 3430 0 0 0 0 0 0 0 16-3584
+chrM 3431 0 0 0 0 0 0 0 16-3584
+chrM 3432 0 0 0 0 0 0 0 16-3584
+chrM 3433 0 0 0 0 0 0 0 16-3584
+chrM 3434 0 0 0 0 0 0 0 16-3584
+chrM 3435 0 0 0 0 0 0 0 16-3584
+chrM 3436 0 0 0 0 0 0 0 16-3584
+chrM 3437 0 0 0 0 0 0 0 16-3584
+chrM 3438 0 0 0 0 0 0 0 16-3584
+chrM 3439 0 0 0 0 0 0 0 16-3584
+chrM 3440 0 0 0 0 0 0 0 16-3584
+chrM 3441 0 0 0 0 0 0 0 16-3584
+chrM 3442 0 0 0 0 0 0 0 16-3584
+chrM 3443 0 0 0 0 0 0 0 16-3584
+chrM 3444 0 0 0 0 0 0 0 16-3584
+chrM 3445 0 0 0 0 0 0 0 16-3584
+chrM 3446 0 0 0 0 0 0 0 16-3584
+chrM 3447 0 0 0 0 0 0 0 16-3584
+chrM 3448 0 0 0 0 0 0 0 16-3584
+chrM 3449 0 0 0 0 0 0 0 16-3584
+chrM 3450 0 0 0 0 0 0 0 16-3584
+chrM 3451 0 0 0 0 0 0 0 16-3584
+chrM 3452 0 0 0 0 0 0 0 16-3584
+chrM 3453 0 0 0 0 0 0 0 16-3584
+chrM 3454 0 0 0 0 0 0 0 16-3584
+chrM 3455 0 0 0 0 0 0 0 16-3584
+chrM 3456 0 0 0 0 0 0 0 16-3584
+chrM 3457 0 0 0 0 0 0 0 16-3584
+chrM 3458 0 0 0 0 0 0 0 16-3584
+chrM 3459 0 0 0 0 0 0 0 16-3584
+chrM 3460 0 0 0 0 0 0 0 16-3584
+chrM 3461 0 0 0 0 0 0 0 16-3584
+chrM 3462 0 0 0 0 0 0 0 16-3584
+chrM 3463 0 0 0 0 0 0 0 16-3584
+chrM 3464 0 0 0 0 0 0 0 16-3584
+chrM 3465 0 0 0 0 0 0 0 16-3584
+chrM 3466 0 0 0 0 0 0 0 16-3584
+chrM 3467 0 0 0 0 0 0 0 16-3584
+chrM 3468 0 0 0 0 0 0 0 16-3584
+chrM 3469 0 0 0 0 0 0 0 16-3584
+chrM 3470 0 0 0 0 0 0 0 16-3584
+chrM 3471 0 0 0 0 0 0 0 16-3584
+chrM 3472 0 0 0 0 0 0 0 16-3584
+chrM 3473 0 0 0 0 0 0 0 16-3584
+chrM 3474 0 0 0 0 0 0 0 16-3584
+chrM 3475 0 0 0 0 0 0 0 16-3584
+chrM 3476 0 0 0 0 0 0 0 16-3584
+chrM 3477 0 0 0 0 0 0 0 16-3584
+chrM 3478 0 0 0 0 0 0 0 16-3584
+chrM 3479 0 0 0 0 0 0 0 16-3584
+chrM 3480 0 0 0 0 0 0 0 16-3584
+chrM 3481 0 0 0 0 0 0 0 16-3584
+chrM 3482 0 0 0 0 0 0 0 16-3584
+chrM 3483 0 0 0 0 0 0 0 16-3584
+chrM 3484 0 0 0 0 0 0 0 16-3584
+chrM 3485 0 0 0 0 0 0 0 16-3584
+chrM 3486 0 0 0 0 0 0 0 16-3584
+chrM 3487 0 0 0 0 0 0 0 16-3584
+chrM 3488 0 0 0 0 0 0 0 16-3584
+chrM 3489 0 0 0 0 0 0 0 16-3584
+chrM 3490 0 0 0 0 0 0 0 16-3584
+chrM 3491 0 0 0 0 0 0 0 16-3584
+chrM 3492 0 0 0 0 0 0 0 16-3584
+chrM 3493 0 0 0 0 0 0 0 16-3584
+chrM 3494 0 0 0 0 0 0 0 16-3584
+chrM 3495 0 0 0 0 0 0 0 16-3584
+chrM 3496 0 0 0 0 0 0 0 16-3584
+chrM 3497 0 0 0 0 0 0 0 16-3584
+chrM 3498 0 0 0 0 0 0 0 16-3584
+chrM 3499 0 0 0 0 0 0 0 16-3584
+chrM 3500 0 0 0 0 0 0 0 16-3584
+chrM 3501 0 0 0 0 0 0 0 16-3584
+chrM 3502 0 0 0 0 0 0 0 16-3584
+chrM 3503 0 0 0 0 0 0 0 16-3584
+chrM 3504 0 0 0 0 0 0 0 16-3584
+chrM 3505 0 0 0 0 0 0 0 16-3584
+chrM 3506 0 0 0 0 0 0 0 16-3584
+chrM 3507 0 0 0 0 0 0 0 16-3584
+chrM 3508 0 0 0 0 0 0 0 16-3584
+chrM 3509 0 0 0 0 0 0 0 16-3584
+chrM 3510 0 0 0 0 0 0 0 16-3584
+chrM 3511 0 0 0 0 0 0 0 16-3584
+chrM 3512 0 0 0 0 0 0 0 16-3584
+chrM 3513 0 0 0 0 0 0 0 16-3584
+chrM 3514 0 0 0 0 0 0 0 16-3584
+chrM 3515 0 0 0 0 0 0 0 16-3584
+chrM 3516 0 0 0 0 0 0 0 16-3584
+chrM 3517 0 0 0 0 0 0 0 16-3584
+chrM 3518 0 0 0 0 0 0 0 16-3584
+chrM 3519 0 0 0 0 0 0 0 16-3584
+chrM 3520 0 0 0 0 0 0 0 16-3584
+chrM 3521 0 0 0 0 0 0 0 16-3584
+chrM 3522 0 0 0 0 0 0 0 16-3584
+chrM 3523 0 0 0 0 0 0 0 16-3584
+chrM 3524 0 0 0 0 0 0 0 16-3584
+chrM 3525 0 0 0 0 0 0 0 16-3584
+chrM 3526 0 0 0 0 0 0 0 16-3584
+chrM 3527 0 0 0 0 0 0 0 16-3584
+chrM 3528 0 0 0 0 0 0 0 16-3584
+chrM 3529 0 0 0 0 0 0 0 16-3584
+chrM 3530 0 0 0 0 0 0 0 16-3584
+chrM 3531 0 0 0 0 0 0 0 16-3584
+chrM 3532 0 0 0 0 0 0 0 16-3584
+chrM 3533 0 0 0 0 0 0 0 16-3584
+chrM 3534 0 0 0 0 0 0 0 16-3584
+chrM 3535 0 0 0 0 0 0 0 16-3584
+chrM 3536 0 0 0 0 0 0 0 16-3584
+chrM 3537 0 0 0 0 0 0 0 16-3584
+chrM 3538 0 0 0 0 0 0 0 16-3584
+chrM 3539 0 0 0 0 0 0 0 16-3584
+chrM 3540 0 0 0 0 0 0 0 16-3584
+chrM 3541 0 0 0 0 0 0 0 16-3584
+chrM 3542 0 0 0 0 0 0 0 16-3584
+chrM 3543 0 0 0 0 0 0 0 16-3584
+chrM 3544 0 0 0 0 0 0 0 16-3584
+chrM 3545 0 0 0 0 0 0 0 16-3584
+chrM 3546 0 0 0 0 0 0 0 16-3584
+chrM 3547 0 0 0 0 0 0 0 16-3584
+chrM 3548 0 0 0 0 0 0 0 16-3584
+chrM 3549 0 0 0 0 0 0 0 16-3584
+chrM 3550 0 0 0 0 0 0 0 16-3584
+chrM 3551 0 0 0 0 0 0 0 16-3584
+chrM 3552 0 0 0 0 0 0 0 16-3584
+chrM 3553 0 0 0 0 0 0 0 16-3584
+chrM 3554 0 0 0 0 0 0 0 16-3584
+chrM 3555 0 0 0 0 0 0 0 16-3584
+chrM 3556 0 0 0 0 0 0 0 16-3584
+chrM 3557 0 0 0 0 0 0 0 16-3584
+chrM 3558 0 0 0 0 0 0 0 16-3584
+chrM 3559 0 0 0 0 0 0 0 16-3584
+chrM 3560 0 0 0 0 0 0 0 16-3584
+chrM 3561 0 0 0 0 0 0 0 16-3584
+chrM 3562 0 0 0 0 0 0 0 16-3584
+chrM 3563 0 0 0 0 0 0 0 16-3584
+chrM 3564 0 0 0 0 0 0 0 16-3584
+chrM 3565 0 0 0 0 0 0 0 16-3584
+chrM 3566 0 0 0 0 0 0 0 16-3584
+chrM 3567 0 0 0 0 0 0 0 16-3584
+chrM 3568 0 0 0 0 0 0 0 16-3584
+chrM 3569 0 0 0 0 0 0 0 16-3584
+chrM 3570 0 0 0 0 0 0 0 16-3584
+chrM 3571 0 0 0 0 0 0 0 16-3584
+chrM 3572 0 0 0 0 0 0 0 16-3584
+chrM 3573 0 0 0 0 0 0 0 16-3584
+chrM 3574 0 0 0 0 0 0 0 16-3584
+chrM 3575 0 0 0 0 0 0 0 16-3584
+chrM 3576 0 0 0 0 0 0 0 16-3584
+chrM 3577 0 0 0 0 0 0 0 16-3584
+chrM 3578 0 0 0 0 0 0 0 16-3584
+chrM 3579 0 0 0 0 0 0 0 16-3584
+chrM 3580 0 0 0 0 0 0 0 16-3584
+chrM 3581 0 0 0 0 0 0 0 16-3584
+chrM 3582 0 0 0 0 0 0 0 16-3584
+chrM 3583 0 0 0 0 0 0 0 16-3584
+chrM 3584 0 0 0 0 0 0 0 16-3584
+chrM 3585 0 0 0 0 0 0 0 16-3584
+chrM 3586 0 0 0 0 0 0 0 16-3584
+chrM 3587 0 0 0 0 0 0 0 16-3584
+chrM 3588 0 0 0 0 0 0 0 16-3584
+chrM 3589 0 0 0 0 0 0 0 16-3584
+chrM 3590 0 0 0 0 0 0 0 16-3584
+chrM 3591 0 0 0 0 0 0 0 16-3584
+chrM 3592 0 0 0 0 0 0 0 16-3584
+chrM 3593 0 0 0 0 0 0 0 16-3584
+chrM 3594 0 0 0 0 0 0 0 16-3584
+chrM 3595 0 0 0 0 0 0 0 16-3584
+chrM 3596 0 0 0 0 0 0 0 16-3584
+chrM 3597 0 0 0 0 0 0 0 16-3584
+chrM 3598 0 0 0 0 0 0 0 16-3584
+chrM 3599 0 0 0 0 0 0 0 16-3584
+chrM 3600 0 0 0 0 0 0 0 16-3584
+chrM 3601 0 0 0 0 0 0 0 16-3584
+chrM 3602 0 0 0 0 0 0 0 16-3584
+chrM 3603 0 0 0 0 0 0 0 16-3584
+chrM 3604 0 0 0 0 0 0 0 16-3584
+chrM 3605 0 0 0 0 0 0 0 16-3584
+chrM 3606 0 0 0 0 0 0 0 16-3584
+chrM 3607 0 0 0 0 0 0 0 16-3584
+chrM 3608 0 0 0 0 0 0 0 16-3584
+chrM 3609 0 0 0 0 0 0 0 16-3584
+chrM 3610 0 0 0 0 0 0 0 16-3584
+chrM 3611 0 0 0 0 0 0 0 16-3584
+chrM 3612 0 0 0 0 0 0 0 16-3584
+chrM 3613 0 0 0 0 0 0 0 16-3584
+chrM 3614 0 0 0 0 0 0 0 16-3584
+chrM 3615 0 0 0 0 0 0 0 16-3584
+chrM 3616 0 0 0 0 0 0 0 16-3584
+chrM 3617 0 0 0 0 0 0 0 16-3584
+chrM 3618 0 0 0 0 0 0 0 16-3584
+chrM 3619 0 0 0 0 0 0 0 16-3584
+chrM 3620 0 0 0 0 0 0 0 16-3584
+chrM 3621 0 0 0 0 0 0 0 16-3584
+chrM 3622 0 0 0 0 0 0 0 16-3584
+chrM 3623 0 0 0 0 0 0 0 16-3584
+chrM 3624 0 0 0 0 0 0 0 16-3584
+chrM 3625 0 0 0 0 0 0 0 16-3584
+chrM 3626 0 0 0 0 0 0 0 16-3584
+chrM 3627 0 0 0 0 0 0 0 16-3584
+chrM 3628 0 0 0 0 0 0 0 16-3584
+chrM 3629 0 0 0 0 0 0 0 16-3584
+chrM 3630 0 0 0 0 0 0 0 16-3584
+chrM 3631 0 0 0 0 0 0 0 16-3584
+chrM 3632 0 0 0 0 0 0 0 16-3584
+chrM 3633 0 0 0 0 0 0 0 16-3584
+chrM 3634 0 0 0 0 0 0 0 16-3584
+chrM 3635 0 0 0 0 0 0 0 16-3584
+chrM 3636 0 0 0 0 0 0 0 16-3584
+chrM 3637 0 0 0 0 0 0 0 16-3584
+chrM 3638 0 0 0 0 0 0 0 16-3584
+chrM 3639 0 0 0 0 0 0 0 16-3584
+chrM 3640 0 0 0 0 0 0 0 16-3584
+chrM 3641 0 0 0 0 0 0 0 16-3584
+chrM 3642 0 0 0 0 0 0 0 16-3584
+chrM 3643 0 0 0 0 0 0 0 16-3584
+chrM 3644 0 0 0 0 0 0 0 16-3584
+chrM 3645 0 0 0 0 0 0 0 16-3584
+chrM 3646 0 0 0 0 0 0 0 16-3584
+chrM 3647 0 0 0 0 0 0 0 16-3584
+chrM 3648 0 0 0 0 0 0 0 16-3584
+chrM 3649 0 0 0 0 0 0 0 16-3584
+chrM 3650 0 0 0 0 0 0 0 16-3584
+chrM 3651 0 0 0 0 0 0 0 16-3584
+chrM 3652 0 0 0 0 0 0 0 16-3584
+chrM 3653 0 0 0 0 0 0 0 16-3584
+chrM 3654 0 0 0 0 0 0 0 16-3584
+chrM 3655 0 0 0 0 0 0 0 16-3584
+chrM 3656 0 0 0 0 0 0 0 16-3584
+chrM 3657 0 0 0 0 0 0 0 16-3584
+chrM 3658 0 0 0 0 0 0 0 16-3584
+chrM 3659 0 0 0 0 0 0 0 16-3584
+chrM 3660 0 0 0 0 0 0 0 16-3584
+chrM 3661 0 0 0 0 0 0 0 16-3584
+chrM 3662 0 0 0 0 0 0 0 16-3584
+chrM 3663 0 0 0 0 0 0 0 16-3584
+chrM 3664 0 0 0 0 0 0 0 16-3584
+chrM 3665 0 0 0 0 0 0 0 16-3584
+chrM 3666 0 0 0 0 0 0 0 16-3584
+chrM 3667 0 0 0 0 0 0 0 16-3584
+chrM 3668 0 0 0 0 0 0 0 16-3584
+chrM 3669 0 0 0 0 0 0 0 16-3584
+chrM 3670 0 0 0 0 0 0 0 16-3584
+chrM 3671 0 0 0 0 0 0 0 16-3584
+chrM 3672 0 0 0 0 0 0 0 16-3584
+chrM 3673 0 0 0 0 0 0 0 16-3584
+chrM 3674 0 0 0 0 0 0 0 16-3584
+chrM 3675 0 0 0 0 0 0 0 16-3584
+chrM 3676 0 0 0 0 0 0 0 16-3584
+chrM 3677 0 0 0 0 0 0 0 16-3584
+chrM 3678 0 0 0 0 0 0 0 16-3584
+chrM 3679 0 0 0 0 0 0 0 16-3584
+chrM 3680 0 0 0 0 0 0 0 16-3584
+chrM 3681 0 0 0 0 0 0 0 16-3584
+chrM 3682 0 0 0 0 0 0 0 16-3584
+chrM 3683 0 0 0 0 0 0 0 16-3584
+chrM 3684 0 0 0 0 0 0 0 16-3584
+chrM 3685 0 0 0 0 0 0 0 16-3584
+chrM 3686 0 0 0 0 0 0 0 16-3584
+chrM 3687 0 0 0 0 0 0 0 16-3584
+chrM 3688 0 0 0 0 0 0 0 16-3584
+chrM 3689 0 0 0 0 0 0 0 16-3584
+chrM 3690 0 0 0 0 0 0 0 16-3584
+chrM 3691 0 0 0 0 0 0 0 16-3584
+chrM 3692 0 0 0 0 0 0 0 16-3584
+chrM 3693 0 0 0 0 0 0 0 16-3584
+chrM 3694 0 0 0 0 0 0 0 16-3584
+chrM 3695 0 0 0 0 0 0 0 16-3584
+chrM 3696 0 0 0 0 0 0 0 16-3584
+chrM 3697 0 0 0 0 0 0 0 16-3584
+chrM 3698 0 0 0 0 0 0 0 16-3584
+chrM 3699 0 0 0 0 0 0 0 16-3584
+chrM 3700 0 0 0 0 0 0 0 16-3584
+chrM 3701 0 0 0 0 0 0 0 16-3584
+chrM 3702 0 0 0 0 0 0 0 16-3584
+chrM 3703 0 0 0 0 0 0 0 16-3584
+chrM 3704 0 0 0 0 0 0 0 16-3584
+chrM 3705 0 0 0 0 0 0 0 16-3584
+chrM 3706 0 0 0 0 0 0 0 16-3584
+chrM 3707 0 0 0 0 0 0 0 16-3584
+chrM 3708 0 0 0 0 0 0 0 16-3584
+chrM 3709 0 0 0 0 0 0 0 16-3584
+chrM 3710 0 0 0 0 0 0 0 16-3584
+chrM 3711 0 0 0 0 0 0 0 16-3584
+chrM 3712 0 0 0 0 0 0 0 16-3584
+chrM 3713 0 0 0 0 0 0 0 16-3584
+chrM 3714 0 0 0 0 0 0 0 16-3584
+chrM 3715 0 0 0 0 0 0 0 16-3584
+chrM 3716 0 0 0 0 0 0 0 16-3584
+chrM 3717 0 0 0 0 0 0 0 16-3584
+chrM 3718 0 0 0 0 0 0 0 16-3584
+chrM 3719 0 0 0 0 0 0 0 16-3584
+chrM 3720 0 0 0 0 0 0 0 16-3584
+chrM 3721 0 0 0 0 0 0 0 16-3584
+chrM 3722 0 0 0 0 0 0 0 16-3584
+chrM 3723 0 0 0 0 0 0 0 16-3584
+chrM 3724 0 0 0 0 0 0 0 16-3584
+chrM 3725 0 0 0 0 0 0 0 16-3584
+chrM 3726 0 0 0 0 0 0 0 16-3584
+chrM 3727 0 0 0 0 0 0 0 16-3584
+chrM 3728 0 0 0 0 0 0 0 16-3584
+chrM 3729 0 0 0 0 0 0 0 16-3584
+chrM 3730 0 0 0 0 0 0 0 16-3584
+chrM 3731 0 0 0 0 0 0 0 16-3584
+chrM 3732 0 0 0 0 0 0 0 16-3584
+chrM 3733 0 0 0 0 0 0 0 16-3584
+chrM 3734 0 0 0 0 0 0 0 16-3584
+chrM 3735 0 0 0 0 0 0 0 16-3584
+chrM 3736 0 0 0 0 0 0 0 16-3584
+chrM 3737 0 0 0 0 0 0 0 16-3584
+chrM 3738 0 0 0 0 0 0 0 16-3584
+chrM 3739 0 0 0 0 0 0 0 16-3584
+chrM 3740 0 0 0 0 0 0 0 16-3584
+chrM 3741 0 0 0 0 0 0 0 16-3584
+chrM 3742 0 0 0 0 0 0 0 16-3584
+chrM 3743 0 0 0 0 0 0 0 16-3584
+chrM 3744 0 0 0 0 0 0 0 16-3584
+chrM 3745 0 0 0 0 0 0 0 16-3584
+chrM 3746 0 0 0 0 0 0 0 16-3584
+chrM 3747 0 0 0 0 0 0 0 16-3584
+chrM 3748 0 0 0 0 0 0 0 16-3584
+chrM 3749 0 0 0 0 0 0 0 16-3584
+chrM 3750 0 0 0 0 0 0 0 16-3584
+chrM 3751 0 0 0 0 0 0 0 16-3584
+chrM 3752 0 0 0 0 0 0 0 16-3584
+chrM 3753 0 0 0 0 0 0 0 16-3584
+chrM 3754 0 0 0 0 0 0 0 16-3584
+chrM 3755 0 0 0 0 0 0 0 16-3584
+chrM 3756 0 0 0 0 0 0 0 16-3584
+chrM 3757 0 0 0 0 0 0 0 16-3584
+chrM 3758 0 0 0 0 0 0 0 16-3584
+chrM 3759 0 0 0 0 0 0 0 16-3584
+chrM 3760 0 0 0 0 0 0 0 16-3584
+chrM 3761 0 0 0 0 0 0 0 16-3584
+chrM 3762 0 0 0 0 0 0 0 16-3584
+chrM 3763 0 0 0 0 0 0 0 16-3584
+chrM 3764 0 0 0 0 0 0 0 16-3584
+chrM 3765 0 0 0 0 0 0 0 16-3584
+chrM 3766 0 0 0 0 0 0 0 16-3584
+chrM 3767 0 0 0 0 0 0 0 16-3584
+chrM 3768 0 0 0 0 0 0 0 16-3584
+chrM 3769 0 0 0 0 0 0 0 16-3584
+chrM 3770 0 0 0 0 0 0 0 16-3584
+chrM 3771 0 0 0 0 0 0 0 16-3584
+chrM 3772 0 0 0 0 0 0 0 16-3584
+chrM 3773 0 0 0 0 0 0 0 16-3584
+chrM 3774 0 0 0 0 0 0 0 16-3584
+chrM 3775 0 0 0 0 0 0 0 16-3584
+chrM 3776 0 0 0 0 0 0 0 16-3584
+chrM 3777 0 0 0 0 0 0 0 16-3584
+chrM 3778 0 0 0 0 0 0 0 16-3584
+chrM 3779 0 0 0 0 0 0 0 16-3584
+chrM 3780 0 0 0 0 0 0 0 16-3584
+chrM 3781 0 0 0 0 0 0 0 16-3584
+chrM 3782 0 0 0 0 0 0 0 16-3584
+chrM 3783 0 0 0 0 0 0 0 16-3584
+chrM 3784 0 0 0 0 0 0 0 16-3584
+chrM 3785 0 0 0 0 0 0 0 16-3584
+chrM 3786 0 0 0 0 0 0 0 16-3584
+chrM 3787 0 0 0 0 0 0 0 16-3584
+chrM 3788 0 0 0 0 0 0 0 16-3584
+chrM 3789 0 0 0 0 0 0 0 16-3584
+chrM 3790 0 0 0 0 0 0 0 16-3584
+chrM 3791 0 0 0 0 0 0 0 16-3584
+chrM 3792 0 0 0 0 0 0 0 16-3584
+chrM 3793 0 0 0 0 0 0 0 16-3584
+chrM 3794 0 0 0 0 0 0 0 16-3584
+chrM 3795 0 0 0 0 0 0 0 16-3584
+chrM 3796 0 0 0 0 0 0 0 16-3584
+chrM 3797 0 0 0 0 0 0 0 16-3584
+chrM 3798 0 0 0 0 0 0 0 16-3584
+chrM 3799 0 0 0 0 0 0 0 16-3584
+chrM 3800 0 0 0 0 0 0 0 16-3584
+chrM 3801 0 0 0 0 0 0 0 16-3584
+chrM 3802 0 0 0 0 0 0 0 16-3584
+chrM 3803 0 0 0 0 0 0 0 16-3584
+chrM 3804 0 0 0 0 0 0 0 16-3584
+chrM 3805 0 0 0 0 0 0 0 16-3584
+chrM 3806 0 0 0 0 0 0 0 16-3584
+chrM 3807 0 0 0 0 0 0 0 16-3584
+chrM 3808 0 0 0 0 0 0 0 16-3584
+chrM 3809 0 0 0 0 0 0 0 16-3584
+chrM 3810 0 0 0 0 0 0 0 16-3584
+chrM 3811 0 0 0 0 0 0 0 16-3584
+chrM 3812 0 0 0 0 0 0 0 16-3584
+chrM 3813 0 0 0 0 0 0 0 16-3584
+chrM 3814 0 0 0 0 0 0 0 16-3584
+chrM 3815 0 0 0 0 0 0 0 16-3584
+chrM 3816 0 0 0 0 0 0 0 16-3584
+chrM 3817 0 0 0 0 0 0 0 16-3584
+chrM 3818 0 0 0 0 0 0 0 16-3584
+chrM 3819 0 0 0 0 0 0 0 16-3584
+chrM 3820 0 0 0 0 0 0 0 16-3584
+chrM 3821 0 0 0 0 0 0 0 16-3584
+chrM 3822 0 0 0 0 0 0 0 16-3584
+chrM 3823 0 0 0 0 0 0 0 16-3584
+chrM 3824 0 0 0 0 0 0 0 16-3584
+chrM 3825 0 0 0 0 0 0 0 16-3584
+chrM 3826 0 0 0 0 0 0 0 16-3584
+chrM 3827 0 0 0 0 0 0 0 16-3584
+chrM 3828 0 0 0 0 0 0 0 16-3584
+chrM 3829 0 0 0 0 0 0 0 16-3584
+chrM 3830 0 0 0 0 0 0 0 16-3584
+chrM 3831 0 0 0 0 0 0 0 16-3584
+chrM 3832 0 0 0 0 0 0 0 16-3584
+chrM 3833 0 0 0 0 0 0 0 16-3584
+chrM 3834 0 0 0 0 0 0 0 16-3584
+chrM 3835 0 0 0 0 0 0 0 16-3584
+chrM 3836 0 0 0 0 0 0 0 16-3584
+chrM 3837 0 0 0 0 0 0 0 16-3584
+chrM 3838 0 0 0 0 0 0 0 16-3584
+chrM 3839 0 0 0 0 0 0 0 16-3584
+chrM 3840 0 0 0 0 0 0 0 16-3584
+chrM 3841 0 0 0 0 0 0 0 16-3584
+chrM 3842 0 0 0 0 0 0 0 16-3584
+chrM 3843 0 0 0 0 0 0 0 16-3584
+chrM 3844 0 0 0 0 0 0 0 16-3584
+chrM 3845 0 0 0 0 0 0 0 16-3584
+chrM 3846 0 0 0 0 0 0 0 16-3584
+chrM 3847 0 0 0 0 0 0 0 16-3584
+chrM 3848 0 0 0 0 0 0 0 16-3584
+chrM 3849 0 0 0 0 0 0 0 16-3584
+chrM 3850 0 0 0 0 0 0 0 16-3584
+chrM 3851 0 0 0 0 0 0 0 16-3584
+chrM 3852 0 0 0 0 0 0 0 16-3584
+chrM 3853 0 0 0 0 0 0 0 16-3584
+chrM 3854 0 0 0 0 0 0 0 16-3584
+chrM 3855 0 0 0 0 0 0 0 16-3584
+chrM 3856 0 0 0 0 0 0 0 16-3584
+chrM 3857 0 0 0 0 0 0 0 16-3584
+chrM 3858 0 0 0 0 0 0 0 16-3584
+chrM 3859 0 0 0 0 0 0 0 16-3584
+chrM 3860 0 0 0 0 0 0 0 16-3584
+chrM 3861 0 0 0 0 0 0 0 16-3584
+chrM 3862 0 0 0 0 0 0 0 16-3584
+chrM 3863 0 0 0 0 0 0 0 16-3584
+chrM 3864 0 0 0 0 0 0 0 16-3584
+chrM 3865 0 0 0 0 0 0 0 16-3584
+chrM 3866 0 0 0 0 0 0 0 16-3584
+chrM 3867 0 0 0 0 0 0 0 16-3584
+chrM 3868 0 0 0 0 0 0 0 16-3584
+chrM 3869 0 0 0 0 0 0 0 16-3584
+chrM 3870 0 0 0 0 0 0 0 16-3584
+chrM 3871 0 0 0 0 0 0 0 16-3584
+chrM 3872 0 0 0 0 0 0 0 16-3584
+chrM 3873 0 0 0 0 0 0 0 16-3584
+chrM 3874 0 0 0 0 0 0 0 16-3584
+chrM 3875 0 0 0 0 0 0 0 16-3584
+chrM 3876 0 0 0 0 0 0 0 16-3584
+chrM 3877 0 0 0 0 0 0 0 16-3584
+chrM 3878 0 0 0 0 0 0 0 16-3584
+chrM 3879 0 0 0 0 0 0 0 16-3584
+chrM 3880 0 0 0 0 0 0 0 16-3584
+chrM 3881 0 0 0 0 0 0 0 16-3584
+chrM 3882 0 0 0 0 0 0 0 16-3584
+chrM 3883 0 0 0 0 0 0 0 16-3584
+chrM 3884 0 0 0 0 0 0 0 16-3584
+chrM 3885 0 0 0 0 0 0 0 16-3584
+chrM 3886 0 0 0 0 0 0 0 16-3584
+chrM 3887 0 0 0 0 0 0 0 16-3584
+chrM 3888 0 0 0 0 0 0 0 16-3584
+chrM 3889 0 0 0 0 0 0 0 16-3584
+chrM 3890 0 0 0 0 0 0 0 16-3584
+chrM 3891 0 0 0 0 0 0 0 16-3584
+chrM 3892 0 0 0 0 0 0 0 16-3584
+chrM 3893 0 0 0 0 0 0 0 16-3584
+chrM 3894 0 0 0 0 0 0 0 16-3584
+chrM 3895 0 0 0 0 0 0 0 16-3584
+chrM 3896 0 0 0 0 0 0 0 16-3584
+chrM 3897 0 0 0 0 0 0 0 16-3584
+chrM 3898 0 0 0 0 0 0 0 16-3584
+chrM 3899 0 0 0 0 0 0 0 16-3584
+chrM 3900 0 0 0 0 0 0 0 16-3584
+chrM 3901 0 0 0 0 0 0 0 16-3584
+chrM 3902 0 0 0 0 0 0 0 16-3584
+chrM 3903 0 0 0 0 0 0 0 16-3584
+chrM 3904 0 0 0 0 0 0 0 16-3584
+chrM 3905 0 0 0 0 0 0 0 16-3584
+chrM 3906 0 0 0 0 0 0 0 16-3584
+chrM 3907 0 0 0 0 0 0 0 16-3584
+chrM 3908 0 0 0 0 0 0 0 16-3584
+chrM 3909 0 0 0 0 0 0 0 16-3584
+chrM 3910 0 0 0 0 0 0 0 16-3584
+chrM 3911 0 0 0 0 0 0 0 16-3584
+chrM 3912 0 0 0 0 0 0 0 16-3584
+chrM 3913 0 0 0 0 0 0 0 16-3584
+chrM 3914 0 0 0 0 0 0 0 16-3584
+chrM 3915 0 0 0 0 0 0 0 16-3584
+chrM 3916 0 0 0 0 0 0 0 16-3584
+chrM 3917 0 0 0 0 0 0 0 16-3584
+chrM 3918 0 0 0 0 0 0 0 16-3584
+chrM 3919 0 0 0 0 0 0 0 16-3584
+chrM 3920 0 0 0 0 0 0 0 16-3584
+chrM 3921 0 0 0 0 0 0 0 16-3584
+chrM 3922 0 0 0 0 0 0 0 16-3584
+chrM 3923 0 0 0 0 0 0 0 16-3584
+chrM 3924 0 0 0 0 0 0 0 16-3584
+chrM 3925 0 0 0 0 0 0 0 16-3584
+chrM 3926 0 0 0 0 0 0 0 16-3584
+chrM 3927 0 0 0 0 0 0 0 16-3584
+chrM 3928 0 0 0 0 0 0 0 16-3584
+chrM 3929 0 0 0 0 0 0 0 16-3584
+chrM 3930 0 0 0 0 0 0 0 16-3584
+chrM 3931 0 0 0 0 0 0 0 16-3584
+chrM 3932 0 0 0 0 0 0 0 16-3584
+chrM 3933 0 0 0 0 0 0 0 16-3584
+chrM 3934 0 0 0 0 0 0 0 16-3584
+chrM 3935 0 0 0 0 0 0 0 16-3584
+chrM 3936 0 0 0 0 0 0 0 16-3584
+chrM 3937 0 0 0 0 0 0 0 16-3584
+chrM 3938 0 0 0 0 0 0 0 16-3584
+chrM 3939 0 0 0 0 0 0 0 16-3584
+chrM 3940 0 0 0 0 0 0 0 16-3584
+chrM 3941 0 0 0 0 0 0 0 16-3584
+chrM 3942 0 0 0 0 0 0 0 16-3584
+chrM 3943 0 0 0 0 0 0 0 16-3584
+chrM 3944 0 0 0 0 0 0 0 16-3584
+chrM 3945 0 0 0 0 0 0 0 16-3584
+chrM 3946 0 0 0 0 0 0 0 16-3584
+chrM 3947 0 0 0 0 0 0 0 16-3584
+chrM 3948 0 0 0 0 0 0 0 16-3584
+chrM 3949 0 0 0 0 0 0 0 16-3584
+chrM 3950 0 0 0 0 0 0 0 16-3584
+chrM 3951 0 0 0 0 0 0 0 16-3584
+chrM 3952 0 0 0 0 0 0 0 16-3584
+chrM 3953 0 0 0 0 0 0 0 16-3584
+chrM 3954 0 0 0 0 0 0 0 16-3584
+chrM 3955 0 0 0 0 0 0 0 16-3584
+chrM 3956 0 0 0 0 0 0 0 16-3584
+chrM 3957 0 0 0 0 0 0 0 16-3584
+chrM 3958 0 0 0 0 0 0 0 16-3584
+chrM 3959 0 0 0 0 0 0 0 16-3584
+chrM 3960 0 0 0 0 0 0 0 16-3584
+chrM 3961 0 0 0 0 0 0 0 16-3584
+chrM 3962 0 0 0 0 0 0 0 16-3584
+chrM 3963 0 0 0 0 0 0 0 16-3584
+chrM 3964 0 0 0 0 0 0 0 16-3584
+chrM 3965 1 0 1 0 0 0 0 16-3584
+chrM 3966 1 0 1 0 0 0 0 16-3584
+chrM 3967 1 1 0 0 0 0 0 16-3584
+chrM 3968 1 0 0 0 1 0 0 16-3584
+chrM 3969 1 0 0 1 0 0 0 16-3584
+chrM 3970 1 0 0 1 0 0 0 16-3584
+chrM 3971 1 1 0 0 0 0 0 16-3584
+chrM 3972 1 1 0 0 0 0 0 16-3584
+chrM 3973 1 0 0 1 0 0 0 16-3584
+chrM 3974 1 1 0 0 0 0 0 16-3584
+chrM 3975 1 0 1 0 0 0 0 16-3584
+chrM 3976 1 0 1 0 0 0 0 16-3584
+chrM 3977 1 0 1 0 0 0 0 16-3584
+chrM 3978 1 0 1 0 0 0 0 16-3584
+chrM 3979 1 0 1 0 0 0 0 16-3584
+chrM 3980 1 0 0 0 1 0 0 16-3584
+chrM 3981 1 0 1 0 0 0 0 16-3584
+chrM 3982 1 0 0 1 0 0 0 16-3584
+chrM 3983 1 0 0 0 1 0 0 16-3584
+chrM 3984 1 0 0 1 0 0 0 16-3584
+chrM 3985 1 1 0 0 0 0 0 16-3584
+chrM 3986 1 0 1 0 0 0 0 16-3584
+chrM 3987 1 0 0 1 0 0 0 16-3584
+chrM 3988 1 0 0 1 0 0 0 16-3584
+chrM 3989 1 0 0 0 1 0 0 16-3584
+chrM 3990 1 0 0 1 0 0 0 16-3584
+chrM 3991 1 0 0 0 1 0 0 16-3584
+chrM 3992 1 1 0 0 0 0 0 16-3584
+chrM 3993 1 0 0 0 1 0 0 16-3584
+chrM 3994 1 0 0 0 1 0 0 16-3584
+chrM 3995 1 0 0 1 0 0 0 16-3584
+chrM 3996 1 0 0 1 0 0 0 16-3584
+chrM 3997 1 0 1 0 0 0 0 16-3584
+chrM 3998 1 0 1 0 0 0 0 16-3584
+chrM 3999 1 0 0 0 1 0 0 16-3584
+chrM 4000 1 1 0 0 0 0 0 16-3584
+chrM 4001 1 1 0 0 0 0 0 16-3584
+chrM 4002 1 0 1 0 0 0 0 16-3584
+chrM 4003 1 0 0 1 0 0 0 16-3584
+chrM 4004 1 0 0 1 0 0 0 16-3584
+chrM 4005 1 0 0 0 1 0 0 16-3584
+chrM 4006 1 1 0 0 0 0 0 16-3584
+chrM 4007 1 1 0 0 0 0 0 16-3584
+chrM 4008 1 1 0 0 0 0 0 16-3584
+chrM 4009 1 0 1 0 0 0 0 16-3584
+chrM 4010 1 0 0 1 0 0 0 16-3584
+chrM 4011 1 1 0 0 0 0 0 16-3584
+chrM 4012 1 0 0 1 0 0 0 16-3584
+chrM 4013 1 1 0 0 0 0 0 16-3584
+chrM 4014 1 0 1 0 0 0 0 16-3584
+chrM 4015 1 0 0 1 0 0 0 16-3584
+chrM 4016 1 0 1 0 0 0 0 16-3584
+chrM 4017 1 0 0 1 0 0 0 16-3584
+chrM 4018 1 1 0 0 0 0 0 16-3584
+chrM 4019 1 0 0 0 1 0 0 16-3584
+chrM 4020 1 0 1 0 0 0 0 16-3584
+chrM 4021 1 0 0 1 0 0 0 16-3584
+chrM 4022 1 1 0 0 0 0 0 16-3584
+chrM 4023 1 1 0 0 0 0 0 16-3584
+chrM 4024 1 1 0 0 0 0 0 16-3584
+chrM 4025 1 1 0 0 0 0 0 16-3584
+chrM 4026 1 0 0 0 1 0 0 16-3584
+chrM 4027 1 0 0 0 1 0 0 16-3584
+chrM 4028 1 0 0 1 0 0 0 16-3584
+chrM 4029 1 1 0 0 0 0 0 16-3584
+chrM 4030 1 0 1 0 0 0 0 16-3584
+chrM 4031 1 0 1 0 0 0 0 16-3584
+chrM 4032 1 1 0 0 0 0 0 16-3584
+chrM 4033 1 0 0 0 1 0 0 16-3584
+chrM 4034 1 0 0 1 0 0 0 16-3584
+chrM 4035 1 0 0 0 1 0 0 16-3584
+chrM 4036 1 0 1 0 0 0 0 16-3584
+chrM 4037 1 0 0 1 0 0 0 16-3584
+chrM 4038 1 0 1 0 0 0 0 16-3584
+chrM 4039 1 0 1 0 0 0 0 16-3584
+chrM 4040 1 1 0 0 0 0 0 16-3584
+chrM 4041 1 1 0 0 0 0 0 16-3584
+chrM 4042 1 0 0 1 0 0 0 16-3584
+chrM 4043 1 0 0 1 0 0 0 16-3584
+chrM 4044 1 0 1 0 0 0 0 16-3584
+chrM 4045 1 1 0 0 0 0 0 16-3584
+chrM 4046 1 0 0 1 0 0 0 16-3584
+chrM 4047 1 0 1 0 0 0 0 16-3584
+chrM 4048 1 1 0 0 0 0 0 16-3584
+chrM 4049 1 0 0 1 0 0 0 16-3584
+chrM 4050 1 0 1 0 0 0 0 16-3584
+chrM 4051 1 0 0 1 0 0 0 16-3584
+chrM 4052 1 0 0 1 0 0 0 16-3584
+chrM 4053 1 0 0 1 0 0 0 16-3584
+chrM 4054 1 0 0 0 1 0 0 16-3584
+chrM 4055 1 0 1 0 0 0 0 16-3584
+chrM 4056 1 0 1 0 0 0 0 16-3584
+chrM 4057 1 0 0 0 1 0 0 16-3584
+chrM 4058 1 0 0 0 1 0 0 16-3584
+chrM 4059 1 0 1 0 0 0 0 16-3584
+chrM 4060 1 0 0 0 1 0 0 16-3584
+chrM 4061 1 0 1 0 0 0 0 16-3584
+chrM 4062 1 0 0 1 0 0 0 16-3584
+chrM 4063 1 0 1 0 0 0 0 16-3584
+chrM 4064 1 0 0 1 0 0 0 16-3584
+chrM 4065 1 0 0 1 0 0 0 16-3584
+chrM 4066 1 0 0 0 1 0 0 16-3584
+chrM 4067 1 0 0 1 0 0 0 16-3584
+chrM 4068 1 1 0 0 0 0 0 16-3584
+chrM 4069 1 0 0 1 0 0 0 16-3584
+chrM 4070 1 0 0 0 1 0 0 16-3584
+chrM 4071 1 1 0 0 0 0 0 16-3584
+chrM 4072 1 0 0 0 1 0 0 16-3584
+chrM 4073 1 0 0 1 0 0 0 16-3584
+chrM 4074 1 1 0 0 0 0 0 16-3584
+chrM 4075 1 0 0 1 0 0 0 16-3584
+chrM 4076 1 0 1 0 0 0 0 16-3584
+chrM 4077 1 0 1 0 0 0 0 16-3584
+chrM 4078 1 1 0 0 0 0 0 16-3584
+chrM 4079 1 0 0 1 0 0 0 16-3584
+chrM 4080 1 0 0 0 1 0 0 16-3584
+chrM 4081 1 0 0 1 0 0 0 16-3584
+chrM 4082 1 1 0 0 0 0 0 16-3584
+chrM 4083 1 0 0 1 0 0 0 16-3584
+chrM 4084 1 1 0 0 0 0 0 16-3584
+chrM 4085 1 0 0 0 1 0 0 16-3584
+chrM 4086 1 0 1 0 0 0 0 16-3584
+chrM 4087 1 0 0 0 1 0 0 16-3584
+chrM 4088 1 1 0 0 0 0 0 16-3584
+chrM 4089 1 0 0 1 0 0 0 16-3584
+chrM 4090 1 1 0 0 0 0 0 16-3584
+chrM 4091 1 1 0 0 0 0 0 16-3584
+chrM 4092 1 0 0 0 1 0 0 16-3584
+chrM 4093 1 1 0 0 0 0 0 16-3584
+chrM 4094 1 0 1 0 0 0 0 16-3584
+chrM 4095 1 1 0 0 0 0 0 16-3584
+chrM 4096 1 0 0 1 0 0 0 16-3584
+chrM 4097 1 0 0 0 1 0 0 16-3584
+chrM 4098 1 0 0 1 0 0 0 16-3584
+chrM 4099 1 0 0 0 1 0 0 16-3584
+chrM 4100 1 1 0 0 0 0 0 16-3584
+chrM 4101 1 0 0 1 0 0 0 16-3584
+chrM 4102 1 1 0 0 0 0 0 16-3584
+chrM 4103 1 0 0 1 0 0 0 16-3584
+chrM 4104 1 0 1 0 0 0 0 16-3584
+chrM 4105 1 0 0 1 0 0 0 16-3584
+chrM 4106 1 0 0 0 1 0 0 16-3584
+chrM 4107 1 1 0 0 0 0 0 16-3584
+chrM 4108 1 0 0 0 1 0 0 16-3584
+chrM 4109 1 0 0 1 0 0 0 16-3584
+chrM 4110 1 0 0 0 1 0 0 16-3584
+chrM 4111 0 0 0 0 0 0 0 16-3584
+chrM 4112 0 0 0 0 0 0 0 16-3584
+chrM 4113 0 0 0 0 0 0 0 16-3584
+chrM 4114 0 0 0 0 0 0 0 16-3584
+chrM 4115 0 0 0 0 0 0 0 16-3584
+chrM 4116 0 0 0 0 0 0 0 16-3584
+chrM 4117 0 0 0 0 0 0 0 16-3584
+chrM 4118 0 0 0 0 0 0 0 16-3584
+chrM 4119 0 0 0 0 0 0 0 16-3584
+chrM 4120 0 0 0 0 0 0 0 16-3584
+chrM 4121 0 0 0 0 0 0 0 16-3584
+chrM 4122 0 0 0 0 0 0 0 16-3584
+chrM 4123 0 0 0 0 0 0 0 16-3584
+chrM 4124 0 0 0 0 0 0 0 16-3584
+chrM 4125 0 0 0 0 0 0 0 16-3584
+chrM 4126 0 0 0 0 0 0 0 16-3584
+chrM 4127 1 1 0 0 0 0 0 16-3584
+chrM 4128 1 0 0 0 1 0 0 16-3584
+chrM 4129 1 0 0 0 1 0 0 16-3584
+chrM 4130 1 0 0 0 1 0 0 16-3584
+chrM 4131 1 1 0 0 0 0 0 16-3584
+chrM 4132 1 0 0 0 1 0 0 16-3584
+chrM 4133 1 0 1 0 0 0 0 16-3584
+chrM 4134 1 1 0 0 0 0 0 16-3584
+chrM 4135 1 1 0 0 0 0 0 16-3584
+chrM 4136 1 0 0 1 0 0 0 16-3584
+chrM 4137 1 0 0 1 0 0 0 16-3584
+chrM 4138 1 0 1 0 0 0 0 16-3584
+chrM 4139 1 0 0 1 0 0 0 16-3584
+chrM 4140 1 0 1 0 0 0 0 16-3584
+chrM 4141 1 0 0 0 1 0 0 16-3584
+chrM 4142 1 1 0 0 0 0 0 16-3584
+chrM 4143 1 0 1 0 0 0 0 16-3584
+chrM 4144 1 0 0 1 0 0 0 16-3584
+chrM 4145 1 0 0 0 1 0 0 16-3584
+chrM 4146 1 1 0 0 0 0 0 16-3584
+chrM 4147 1 0 1 0 0 0 0 16-3584
+chrM 4148 1 0 1 0 0 0 0 16-3584
+chrM 4149 1 1 0 0 0 0 0 16-3584
+chrM 4150 1 0 1 0 0 0 0 16-3584
+chrM 4151 1 1 0 0 0 0 0 16-3584
+chrM 4152 1 0 1 0 0 0 0 16-3584
+chrM 4153 1 1 0 0 0 0 0 16-3584
+chrM 4154 1 0 0 0 1 0 0 16-3584
+chrM 4155 1 1 0 0 0 0 0 16-3584
+chrM 4156 1 0 1 0 0 0 0 16-3584
+chrM 4157 1 0 0 1 0 0 0 16-3584
+chrM 4158 1 1 0 0 0 0 0 16-3584
+chrM 4159 1 1 0 0 0 0 0 16-3584
+chrM 4160 1 0 1 0 0 0 0 16-3584
+chrM 4161 1 0 1 0 0 0 0 16-3584
+chrM 4162 1 0 0 1 0 0 0 16-3584
+chrM 4163 1 1 0 0 0 0 0 16-3584
+chrM 4164 1 0 0 1 0 0 0 16-3584
+chrM 4165 2 0 1 0 1 0 0 16-3584
+chrM 4166 2 2 0 0 0 0 0 16-3584
+chrM 4167 2 0 2 0 0 0 0 16-3584
+chrM 4168 2 0 1 0 1 0 0 16-3584
+chrM 4169 2 0 2 0 0 0 0 16-3584
+chrM 4170 2 0 1 1 0 0 0 16-3584
+chrM 4171 2 1 0 1 0 0 0 16-3584
+chrM 4172 2 0 1 0 1 0 0 16-3584
+chrM 4173 2 0 0 2 0 0 0 16-3584
+chrM 4174 2 0 1 0 1 0 0 16-3584
+chrM 4175 2 0 0 1 1 0 0 16-3584
+chrM 4176 2 1 0 0 1 0 0 16-3584
+chrM 4177 2 2 0 0 0 0 0 16-3584
+chrM 4178 2 0 0 1 1 0 0 16-3584
+chrM 4179 2 2 0 0 0 0 0 16-3584
+chrM 4180 2 0 0 2 0 0 0 16-3584
+chrM 4181 2 1 1 0 0 0 0 16-3584
+chrM 4182 2 0 0 0 2 0 0 16-3584
+chrM 4183 2 0 0 1 1 0 0 16-3584
+chrM 4184 2 0 1 1 0 0 0 16-3584
+chrM 4185 2 1 0 0 1 0 0 16-3584
+chrM 4186 2 1 0 0 1 0 0 16-3584
+chrM 4187 2 1 0 0 1 0 0 16-3584
+chrM 4188 2 0 1 0 1 0 0 16-3584
+chrM 4189 2 0 2 0 0 0 0 16-3584
+chrM 4190 2 0 0 1 1 0 0 16-3584
+chrM 4191 2 0 2 0 0 0 0 16-3584
+chrM 4192 2 1 1 0 0 0 0 16-3584
+chrM 4193 2 1 0 1 0 0 0 16-3584
+chrM 4194 2 1 0 0 1 0 0 16-3584
+chrM 4195 2 0 1 0 1 0 0 16-3584
+chrM 4196 2 1 0 1 0 0 0 16-3584
+chrM 4197 2 0 1 1 0 0 0 16-3584
+chrM 4198 2 0 0 0 2 0 0 16-3584
+chrM 4199 2 1 0 0 1 0 0 16-3584
+chrM 4200 2 1 1 0 0 0 0 16-3584
+chrM 4201 2 0 0 0 2 0 0 16-3584
+chrM 4202 2 0 1 0 1 0 0 16-3584
+chrM 4203 2 0 1 1 0 0 0 16-3584
+chrM 4204 2 2 0 0 0 0 0 16-3584
+chrM 4205 2 1 0 1 0 0 0 16-3584
+chrM 4206 2 1 0 0 1 0 0 16-3584
+chrM 4207 2 1 0 1 0 0 0 16-3584
+chrM 4208 2 0 1 1 0 0 0 16-3584
+chrM 4209 2 1 1 0 0 0 0 16-3584
+chrM 4210 2 0 0 1 1 0 0 16-3584
+chrM 4211 2 0 1 1 0 0 0 16-3584
+chrM 4212 2 1 1 0 0 0 0 16-3584
+chrM 4213 2 1 0 0 1 0 0 16-3584
+chrM 4214 2 0 0 1 1 0 0 16-3584
+chrM 4215 2 0 1 1 0 0 0 16-3584
+chrM 4216 2 0 2 0 0 0 0 16-3584
+chrM 4217 3 2 0 1 0 0 0 16-3584
+chrM 4218 3 2 0 0 1 0 0 16-3584
+chrM 4219 3 1 0 0 2 0 0 16-3584
+chrM 4220 3 0 0 1 2 0 0 16-3584
+chrM 4221 3 0 1 2 0 0 0 16-3584
+chrM 4222 3 1 0 1 1 0 0 16-3584
+chrM 4223 3 1 2 0 0 0 0 16-3584
+chrM 4224 3 1 0 2 0 0 0 16-3584
+chrM 4225 3 0 1 2 0 0 0 16-3584
+chrM 4226 3 1 1 0 1 0 0 16-3584
+chrM 4227 3 2 1 0 0 0 0 16-3584
+chrM 4228 3 0 1 1 1 0 0 16-3584
+chrM 4229 3 1 1 0 1 0 0 16-3584
+chrM 4230 3 1 1 0 1 0 0 16-3584
+chrM 4231 3 1 0 1 1 0 0 16-3584
+chrM 4232 3 0 1 2 0 0 0 16-3584
+chrM 4233 3 0 1 1 1 0 0 16-3584
+chrM 4234 3 0 2 1 0 0 0 16-3584
+chrM 4235 3 1 1 0 1 0 0 16-3584
+chrM 4236 3 0 2 0 1 0 0 16-3584
+chrM 4237 3 2 0 0 1 0 0 16-3584
+chrM 4238 3 1 0 0 2 0 0 16-3584
+chrM 4239 3 2 0 0 1 0 0 16-3584
+chrM 4240 3 0 2 1 0 0 0 16-3584
+chrM 4241 3 1 0 1 1 0 0 16-3584
+chrM 4242 3 0 1 0 2 0 0 16-3584
+chrM 4243 3 0 1 2 0 0 0 16-3584
+chrM 4244 3 0 2 1 0 0 0 16-3584
+chrM 4245 3 0 2 0 1 0 0 16-3584
+chrM 4246 3 0 2 1 0 0 0 16-3584
+chrM 4247 3 1 1 0 1 0 0 16-3584
+chrM 4248 3 0 0 1 2 0 0 16-3584
+chrM 4249 3 1 1 1 0 0 0 16-3584
+chrM 4250 3 1 0 1 1 0 0 16-3584
+chrM 4251 3 0 2 0 1 0 0 16-3584
+chrM 4252 3 1 0 1 1 0 0 16-3584
+chrM 4253 3 1 1 1 0 0 0 16-3584
+chrM 4254 3 1 1 0 1 0 0 16-3584
+chrM 4255 3 1 1 0 1 0 0 16-3584
+chrM 4256 3 0 2 0 1 0 0 16-3584
+chrM 4257 3 0 0 3 0 0 0 16-3584
+chrM 4258 3 0 0 3 0 0 0 16-3584
+chrM 4259 3 0 1 1 1 0 0 16-3584
+chrM 4260 3 1 0 0 2 0 0 16-3584
+chrM 4261 3 1 2 0 0 0 0 16-3584
+chrM 4262 3 1 1 1 0 0 0 16-3584
+chrM 4263 3 0 0 2 1 0 0 16-3584
+chrM 4264 3 0 2 0 1 0 0 16-3584
+chrM 4265 3 0 0 1 2 0 0 16-3584
+chrM 4266 3 1 1 1 0 0 0 16-3584
+chrM 4267 3 1 1 1 0 0 0 16-3584
+chrM 4268 3 1 1 1 0 0 0 16-3584
+chrM 4269 3 1 1 0 1 0 0 16-3584
+chrM 4270 3 0 2 0 1 0 0 16-3584
+chrM 4271 3 0 1 2 0 0 0 16-3584
+chrM 4272 3 0 2 0 1 0 0 16-3584
+chrM 4273 2 1 0 1 0 0 0 16-3584
+chrM 4274 2 1 0 0 1 0 0 16-3584
+chrM 4275 2 0 1 1 0 0 0 16-3584
+chrM 4276 2 2 0 0 0 0 0 16-3584
+chrM 4277 2 1 0 1 0 0 0 16-3584
+chrM 4278 2 1 0 1 0 0 0 16-3584
+chrM 4279 2 0 0 2 0 0 0 16-3584
+chrM 4280 2 0 0 0 2 0 0 16-3584
+chrM 4281 2 2 0 0 0 0 0 16-3584
+chrM 4282 2 1 0 1 0 0 0 16-3584
+chrM 4283 2 0 1 1 0 0 0 16-3584
+chrM 4284 2 0 0 1 1 0 0 16-3584
+chrM 4285 2 0 0 1 1 0 0 16-3584
+chrM 4286 2 1 0 1 0 0 0 16-3584
+chrM 4287 2 0 2 0 0 0 0 16-3584
+chrM 4288 2 2 0 0 0 0 0 16-3584
+chrM 4289 2 0 1 0 1 0 0 16-3584
+chrM 4290 2 0 0 1 1 0 0 16-3584
+chrM 4291 2 0 0 0 2 0 0 16-3584
+chrM 4292 2 2 0 0 0 0 0 16-3584
+chrM 4293 2 2 0 0 0 0 0 16-3584
+chrM 4294 2 1 1 0 0 0 0 16-3584
+chrM 4295 2 0 0 1 1 0 0 16-3584
+chrM 4296 2 1 1 0 0 0 0 16-3584
+chrM 4297 2 1 0 0 1 0 0 16-3584
+chrM 4298 2 1 0 0 1 0 0 16-3584
+chrM 4299 2 1 0 0 1 0 0 16-3584
+chrM 4300 2 1 1 0 0 0 0 16-3584
+chrM 4301 2 0 0 0 2 0 0 16-3584
+chrM 4302 2 1 0 1 0 0 0 16-3584
+chrM 4303 2 1 1 0 0 0 0 16-3584
+chrM 4304 2 0 0 0 2 0 0 16-3584
+chrM 4305 2 1 0 0 1 0 0 16-3584
+chrM 4306 2 2 0 0 0 0 0 16-3584
+chrM 4307 2 0 0 1 1 0 0 16-3584
+chrM 4308 2 2 0 0 0 0 0 16-3584
+chrM 4309 1 0 0 1 0 0 0 16-3584
+chrM 4310 1 0 1 0 0 0 0 16-3584
+chrM 4311 1 0 0 1 0 0 0 16-3584
+chrM 4312 1 1 0 0 0 0 0 16-3584
+chrM 4313 1 0 1 0 0 0 0 16-3584
+chrM 4314 1 0 1 0 0 0 0 16-3584
+chrM 4315 1 0 0 0 1 0 0 16-3584
+chrM 4316 1 0 0 0 1 0 0 16-3584
+chrM 4317 1 0 0 0 1 0 0 16-3584
+chrM 4318 1 0 0 1 0 0 0 16-3584
+chrM 4319 1 0 0 0 1 0 0 16-3584
+chrM 4320 1 0 1 0 0 0 0 16-3584
+chrM 4321 1 0 0 1 0 0 0 16-3584
+chrM 4322 1 1 0 0 0 0 0 16-3584
+chrM 4323 1 0 1 0 0 0 0 16-3584
+chrM 4324 1 0 1 0 0 0 0 16-3584
+chrM 4325 1 1 0 0 0 0 0 16-3584
+chrM 4326 1 0 0 0 1 0 0 16-3584
+chrM 4327 1 0 0 0 1 0 0 16-3584
+chrM 4328 1 1 0 0 0 0 0 16-3584
+chrM 4329 1 0 0 1 0 0 0 16-3584
+chrM 4330 1 1 0 0 0 0 0 16-3584
+chrM 4331 1 0 0 1 0 0 0 16-3584
+chrM 4332 1 1 0 0 0 0 0 16-3584
+chrM 4333 1 1 0 0 0 0 0 16-3584
+chrM 4334 1 0 0 0 1 0 0 16-3584
+chrM 4335 1 0 0 0 1 0 0 16-3584
+chrM 4336 1 0 0 0 1 0 0 16-3584
+chrM 4337 1 0 0 0 1 0 0 16-3584
+chrM 4338 1 0 0 1 0 0 0 16-3584
+chrM 4339 1 0 0 0 1 0 0 16-3584
+chrM 4340 1 1 0 0 0 0 0 16-3584
+chrM 4341 1 0 0 0 1 0 0 16-3584
+chrM 4342 1 0 0 0 1 0 0 16-3584
+chrM 4343 1 1 0 0 0 0 0 16-3584
+chrM 4344 1 0 0 1 0 0 0 16-3584
+chrM 4345 1 0 0 0 1 0 0 16-3584
+chrM 4346 1 0 1 0 0 0 0 16-3584
+chrM 4347 1 1 0 0 0 0 0 16-3584
+chrM 4348 1 0 1 0 0 0 0 16-3584
+chrM 4349 1 0 0 0 1 0 0 16-3584
+chrM 4350 1 0 0 1 0 0 0 16-3584
+chrM 4351 1 0 0 0 1 0 0 16-3584
+chrM 4352 1 0 0 0 1 0 0 16-3584
+chrM 4353 1 0 1 0 0 0 0 16-3584
+chrM 4354 1 1 0 0 0 0 0 16-3584
+chrM 4355 1 0 0 0 1 0 0 16-3584
+chrM 4356 1 0 0 0 1 0 0 16-3584
+chrM 4357 1 0 0 0 1 0 0 16-3584
+chrM 4358 1 0 0 1 0 0 0 16-3584
+chrM 4359 1 1 0 0 0 0 0 16-3584
+chrM 4360 1 1 0 0 0 0 0 16-3584
+chrM 4361 1 0 0 0 1 0 0 16-3584
+chrM 4362 1 0 0 1 0 0 0 16-3584
+chrM 4363 0 0 0 0 0 0 0 16-3584
+chrM 4364 0 0 0 0 0 0 0 16-3584
+chrM 4365 0 0 0 0 0 0 0 16-3584
+chrM 4366 0 0 0 0 0 0 0 16-3584
+chrM 4367 0 0 0 0 0 0 0 16-3584
+chrM 4368 0 0 0 0 0 0 0 16-3584
+chrM 4369 0 0 0 0 0 0 0 16-3584
+chrM 4370 0 0 0 0 0 0 0 16-3584
+chrM 4371 0 0 0 0 0 0 0 16-3584
+chrM 4372 0 0 0 0 0 0 0 16-3584
+chrM 4373 0 0 0 0 0 0 0 16-3584
+chrM 4374 0 0 0 0 0 0 0 16-3584
+chrM 4375 0 0 0 0 0 0 0 16-3584
+chrM 4376 0 0 0 0 0 0 0 16-3584
+chrM 4377 0 0 0 0 0 0 0 16-3584
+chrM 4378 0 0 0 0 0 0 0 16-3584
+chrM 4379 0 0 0 0 0 0 0 16-3584
+chrM 4380 0 0 0 0 0 0 0 16-3584
+chrM 4381 0 0 0 0 0 0 0 16-3584
+chrM 4382 0 0 0 0 0 0 0 16-3584
+chrM 4383 0 0 0 0 0 0 0 16-3584
+chrM 4384 0 0 0 0 0 0 0 16-3584
+chrM 4385 0 0 0 0 0 0 0 16-3584
+chrM 4386 0 0 0 0 0 0 0 16-3584
+chrM 4387 0 0 0 0 0 0 0 16-3584
+chrM 4388 0 0 0 0 0 0 0 16-3584
+chrM 4389 0 0 0 0 0 0 0 16-3584
+chrM 4390 0 0 0 0 0 0 0 16-3584
+chrM 4391 0 0 0 0 0 0 0 16-3584
+chrM 4392 0 0 0 0 0 0 0 16-3584
+chrM 4393 0 0 0 0 0 0 0 16-3584
+chrM 4394 0 0 0 0 0 0 0 16-3584
+chrM 4395 0 0 0 0 0 0 0 16-3584
+chrM 4396 0 0 0 0 0 0 0 16-3584
+chrM 4397 0 0 0 0 0 0 0 16-3584
+chrM 4398 0 0 0 0 0 0 0 16-3584
+chrM 4399 0 0 0 0 0 0 0 16-3584
+chrM 4400 0 0 0 0 0 0 0 16-3584
+chrM 4401 0 0 0 0 0 0 0 16-3584
+chrM 4402 0 0 0 0 0 0 0 16-3584
+chrM 4403 0 0 0 0 0 0 0 16-3584
+chrM 4404 0 0 0 0 0 0 0 16-3584
+chrM 4405 0 0 0 0 0 0 0 16-3584
+chrM 4406 0 0 0 0 0 0 0 16-3584
+chrM 4407 0 0 0 0 0 0 0 16-3584
+chrM 4408 0 0 0 0 0 0 0 16-3584
+chrM 4409 0 0 0 0 0 0 0 16-3584
+chrM 4410 0 0 0 0 0 0 0 16-3584
+chrM 4411 0 0 0 0 0 0 0 16-3584
+chrM 4412 0 0 0 0 0 0 0 16-3584
+chrM 4413 0 0 0 0 0 0 0 16-3584
+chrM 4414 0 0 0 0 0 0 0 16-3584
+chrM 4415 0 0 0 0 0 0 0 16-3584
+chrM 4416 0 0 0 0 0 0 0 16-3584
+chrM 4417 0 0 0 0 0 0 0 16-3584
+chrM 4418 0 0 0 0 0 0 0 16-3584
+chrM 4419 0 0 0 0 0 0 0 16-3584
+chrM 4420 0 0 0 0 0 0 0 16-3584
+chrM 4421 0 0 0 0 0 0 0 16-3584
+chrM 4422 0 0 0 0 0 0 0 16-3584
+chrM 4423 0 0 0 0 0 0 0 16-3584
+chrM 4424 0 0 0 0 0 0 0 16-3584
+chrM 4425 0 0 0 0 0 0 0 16-3584
+chrM 4426 0 0 0 0 0 0 0 16-3584
+chrM 4427 0 0 0 0 0 0 0 16-3584
+chrM 4428 0 0 0 0 0 0 0 16-3584
+chrM 4429 0 0 0 0 0 0 0 16-3584
+chrM 4430 0 0 0 0 0 0 0 16-3584
+chrM 4431 0 0 0 0 0 0 0 16-3584
+chrM 4432 0 0 0 0 0 0 0 16-3584
+chrM 4433 0 0 0 0 0 0 0 16-3584
+chrM 4434 0 0 0 0 0 0 0 16-3584
+chrM 4435 0 0 0 0 0 0 0 16-3584
+chrM 4436 0 0 0 0 0 0 0 16-3584
+chrM 4437 0 0 0 0 0 0 0 16-3584
+chrM 4438 0 0 0 0 0 0 0 16-3584
+chrM 4439 0 0 0 0 0 0 0 16-3584
+chrM 4440 0 0 0 0 0 0 0 16-3584
+chrM 4441 0 0 0 0 0 0 0 16-3584
+chrM 4442 0 0 0 0 0 0 0 16-3584
+chrM 4443 0 0 0 0 0 0 0 16-3584
+chrM 4444 0 0 0 0 0 0 0 16-3584
+chrM 4445 0 0 0 0 0 0 0 16-3584
+chrM 4446 0 0 0 0 0 0 0 16-3584
+chrM 4447 0 0 0 0 0 0 0 16-3584
+chrM 4448 0 0 0 0 0 0 0 16-3584
+chrM 4449 0 0 0 0 0 0 0 16-3584
+chrM 4450 0 0 0 0 0 0 0 16-3584
+chrM 4451 0 0 0 0 0 0 0 16-3584
+chrM 4452 0 0 0 0 0 0 0 16-3584
+chrM 4453 0 0 0 0 0 0 0 16-3584
+chrM 4454 0 0 0 0 0 0 0 16-3584
+chrM 4455 0 0 0 0 0 0 0 16-3584
+chrM 4456 0 0 0 0 0 0 0 16-3584
+chrM 4457 0 0 0 0 0 0 0 16-3584
+chrM 4458 0 0 0 0 0 0 0 16-3584
+chrM 4459 0 0 0 0 0 0 0 16-3584
+chrM 4460 0 0 0 0 0 0 0 16-3584
+chrM 4461 0 0 0 0 0 0 0 16-3584
+chrM 4462 0 0 0 0 0 0 0 16-3584
+chrM 4463 0 0 0 0 0 0 0 16-3584
+chrM 4464 0 0 0 0 0 0 0 16-3584
+chrM 4465 0 0 0 0 0 0 0 16-3584
+chrM 4466 0 0 0 0 0 0 0 16-3584
+chrM 4467 0 0 0 0 0 0 0 16-3584
+chrM 4468 0 0 0 0 0 0 0 16-3584
+chrM 4469 0 0 0 0 0 0 0 16-3584
+chrM 4470 0 0 0 0 0 0 0 16-3584
+chrM 4471 0 0 0 0 0 0 0 16-3584
+chrM 4472 0 0 0 0 0 0 0 16-3584
+chrM 4473 0 0 0 0 0 0 0 16-3584
+chrM 4474 0 0 0 0 0 0 0 16-3584
+chrM 4475 0 0 0 0 0 0 0 16-3584
+chrM 4476 0 0 0 0 0 0 0 16-3584
+chrM 4477 0 0 0 0 0 0 0 16-3584
+chrM 4478 0 0 0 0 0 0 0 16-3584
+chrM 4479 0 0 0 0 0 0 0 16-3584
+chrM 4480 0 0 0 0 0 0 0 16-3584
+chrM 4481 0 0 0 0 0 0 0 16-3584
+chrM 4482 0 0 0 0 0 0 0 16-3584
+chrM 4483 0 0 0 0 0 0 0 16-3584
+chrM 4484 0 0 0 0 0 0 0 16-3584
+chrM 4485 0 0 0 0 0 0 0 16-3584
+chrM 4486 0 0 0 0 0 0 0 16-3584
+chrM 4487 0 0 0 0 0 0 0 16-3584
+chrM 4488 0 0 0 0 0 0 0 16-3584
+chrM 4489 0 0 0 0 0 0 0 16-3584
+chrM 4490 0 0 0 0 0 0 0 16-3584
+chrM 4491 0 0 0 0 0 0 0 16-3584
+chrM 4492 0 0 0 0 0 0 0 16-3584
+chrM 4493 0 0 0 0 0 0 0 16-3584
+chrM 4494 0 0 0 0 0 0 0 16-3584
+chrM 4495 0 0 0 0 0 0 0 16-3584
+chrM 4496 0 0 0 0 0 0 0 16-3584
+chrM 4497 0 0 0 0 0 0 0 16-3584
+chrM 4498 0 0 0 0 0 0 0 16-3584
+chrM 4499 0 0 0 0 0 0 0 16-3584
+chrM 4500 0 0 0 0 0 0 0 16-3584
+chrM 4501 0 0 0 0 0 0 0 16-3584
+chrM 4502 0 0 0 0 0 0 0 16-3584
+chrM 4503 0 0 0 0 0 0 0 16-3584
+chrM 4504 0 0 0 0 0 0 0 16-3584
+chrM 4505 0 0 0 0 0 0 0 16-3584
+chrM 4506 0 0 0 0 0 0 0 16-3584
+chrM 4507 0 0 0 0 0 0 0 16-3584
+chrM 4508 0 0 0 0 0 0 0 16-3584
+chrM 4509 0 0 0 0 0 0 0 16-3584
+chrM 4510 0 0 0 0 0 0 0 16-3584
+chrM 4511 0 0 0 0 0 0 0 16-3584
+chrM 4512 0 0 0 0 0 0 0 16-3584
+chrM 4513 0 0 0 0 0 0 0 16-3584
+chrM 4514 0 0 0 0 0 0 0 16-3584
+chrM 4515 0 0 0 0 0 0 0 16-3584
+chrM 4516 0 0 0 0 0 0 0 16-3584
+chrM 4517 0 0 0 0 0 0 0 16-3584
+chrM 4518 0 0 0 0 0 0 0 16-3584
+chrM 4519 0 0 0 0 0 0 0 16-3584
+chrM 4520 0 0 0 0 0 0 0 16-3584
+chrM 4521 0 0 0 0 0 0 0 16-3584
+chrM 4522 0 0 0 0 0 0 0 16-3584
+chrM 4523 0 0 0 0 0 0 0 16-3584
+chrM 4524 0 0 0 0 0 0 0 16-3584
+chrM 4525 0 0 0 0 0 0 0 16-3584
+chrM 4526 0 0 0 0 0 0 0 16-3584
+chrM 4527 0 0 0 0 0 0 0 16-3584
+chrM 4528 0 0 0 0 0 0 0 16-3584
+chrM 4529 0 0 0 0 0 0 0 16-3584
+chrM 4530 0 0 0 0 0 0 0 16-3584
+chrM 4531 0 0 0 0 0 0 0 16-3584
+chrM 4532 0 0 0 0 0 0 0 16-3584
+chrM 4533 0 0 0 0 0 0 0 16-3584
+chrM 4534 0 0 0 0 0 0 0 16-3584
+chrM 4535 0 0 0 0 0 0 0 16-3584
+chrM 4536 0 0 0 0 0 0 0 16-3584
+chrM 4537 0 0 0 0 0 0 0 16-3584
+chrM 4538 0 0 0 0 0 0 0 16-3584
+chrM 4539 0 0 0 0 0 0 0 16-3584
+chrM 4540 0 0 0 0 0 0 0 16-3584
+chrM 4541 0 0 0 0 0 0 0 16-3584
+chrM 4542 0 0 0 0 0 0 0 16-3584
+chrM 4543 0 0 0 0 0 0 0 16-3584
+chrM 4544 0 0 0 0 0 0 0 16-3584
+chrM 4545 0 0 0 0 0 0 0 16-3584
+chrM 4546 0 0 0 0 0 0 0 16-3584
+chrM 4547 0 0 0 0 0 0 0 16-3584
+chrM 4548 0 0 0 0 0 0 0 16-3584
+chrM 4549 0 0 0 0 0 0 0 16-3584
+chrM 4550 0 0 0 0 0 0 0 16-3584
+chrM 4551 0 0 0 0 0 0 0 16-3584
+chrM 4552 0 0 0 0 0 0 0 16-3584
+chrM 4553 0 0 0 0 0 0 0 16-3584
+chrM 4554 0 0 0 0 0 0 0 16-3584
+chrM 4555 0 0 0 0 0 0 0 16-3584
+chrM 4556 0 0 0 0 0 0 0 16-3584
+chrM 4557 0 0 0 0 0 0 0 16-3584
+chrM 4558 0 0 0 0 0 0 0 16-3584
+chrM 4559 0 0 0 0 0 0 0 16-3584
+chrM 4560 0 0 0 0 0 0 0 16-3584
+chrM 4561 0 0 0 0 0 0 0 16-3584
+chrM 4562 0 0 0 0 0 0 0 16-3584
+chrM 4563 0 0 0 0 0 0 0 16-3584
+chrM 4564 0 0 0 0 0 0 0 16-3584
+chrM 4565 0 0 0 0 0 0 0 16-3584
+chrM 4566 0 0 0 0 0 0 0 16-3584
+chrM 4567 0 0 0 0 0 0 0 16-3584
+chrM 4568 0 0 0 0 0 0 0 16-3584
+chrM 4569 0 0 0 0 0 0 0 16-3584
+chrM 4570 0 0 0 0 0 0 0 16-3584
+chrM 4571 0 0 0 0 0 0 0 16-3584
+chrM 4572 0 0 0 0 0 0 0 16-3584
+chrM 4573 0 0 0 0 0 0 0 16-3584
+chrM 4574 0 0 0 0 0 0 0 16-3584
+chrM 4575 0 0 0 0 0 0 0 16-3584
+chrM 4576 0 0 0 0 0 0 0 16-3584
+chrM 4577 0 0 0 0 0 0 0 16-3584
+chrM 4578 0 0 0 0 0 0 0 16-3584
+chrM 4579 0 0 0 0 0 0 0 16-3584
+chrM 4580 0 0 0 0 0 0 0 16-3584
+chrM 4581 0 0 0 0 0 0 0 16-3584
+chrM 4582 0 0 0 0 0 0 0 16-3584
+chrM 4583 0 0 0 0 0 0 0 16-3584
+chrM 4584 0 0 0 0 0 0 0 16-3584
+chrM 4585 0 0 0 0 0 0 0 16-3584
+chrM 4586 0 0 0 0 0 0 0 16-3584
+chrM 4587 0 0 0 0 0 0 0 16-3584
+chrM 4588 0 0 0 0 0 0 0 16-3584
+chrM 4589 0 0 0 0 0 0 0 16-3584
+chrM 4590 0 0 0 0 0 0 0 16-3584
+chrM 4591 0 0 0 0 0 0 0 16-3584
+chrM 4592 0 0 0 0 0 0 0 16-3584
+chrM 4593 0 0 0 0 0 0 0 16-3584
+chrM 4594 0 0 0 0 0 0 0 16-3584
+chrM 4595 0 0 0 0 0 0 0 16-3584
+chrM 4596 0 0 0 0 0 0 0 16-3584
+chrM 4597 0 0 0 0 0 0 0 16-3584
+chrM 4598 0 0 0 0 0 0 0 16-3584
+chrM 4599 0 0 0 0 0 0 0 16-3584
+chrM 4600 0 0 0 0 0 0 0 16-3584
+chrM 4601 0 0 0 0 0 0 0 16-3584
+chrM 4602 0 0 0 0 0 0 0 16-3584
+chrM 4603 0 0 0 0 0 0 0 16-3584
+chrM 4604 0 0 0 0 0 0 0 16-3584
+chrM 4605 0 0 0 0 0 0 0 16-3584
+chrM 4606 0 0 0 0 0 0 0 16-3584
+chrM 4607 0 0 0 0 0 0 0 16-3584
+chrM 4608 0 0 0 0 0 0 0 16-3584
+chrM 4609 0 0 0 0 0 0 0 16-3584
+chrM 4610 0 0 0 0 0 0 0 16-3584
+chrM 4611 0 0 0 0 0 0 0 16-3584
+chrM 4612 0 0 0 0 0 0 0 16-3584
+chrM 4613 0 0 0 0 0 0 0 16-3584
+chrM 4614 0 0 0 0 0 0 0 16-3584
+chrM 4615 0 0 0 0 0 0 0 16-3584
+chrM 4616 0 0 0 0 0 0 0 16-3584
+chrM 4617 0 0 0 0 0 0 0 16-3584
+chrM 4618 0 0 0 0 0 0 0 16-3584
+chrM 4619 0 0 0 0 0 0 0 16-3584
+chrM 4620 0 0 0 0 0 0 0 16-3584
+chrM 4621 0 0 0 0 0 0 0 16-3584
+chrM 4622 0 0 0 0 0 0 0 16-3584
+chrM 4623 0 0 0 0 0 0 0 16-3584
+chrM 4624 0 0 0 0 0 0 0 16-3584
+chrM 4625 0 0 0 0 0 0 0 16-3584
+chrM 4626 0 0 0 0 0 0 0 16-3584
+chrM 4627 0 0 0 0 0 0 0 16-3584
+chrM 4628 0 0 0 0 0 0 0 16-3584
+chrM 4629 0 0 0 0 0 0 0 16-3584
+chrM 4630 0 0 0 0 0 0 0 16-3584
+chrM 4631 0 0 0 0 0 0 0 16-3584
+chrM 4632 0 0 0 0 0 0 0 16-3584
+chrM 4633 0 0 0 0 0 0 0 16-3584
+chrM 4634 0 0 0 0 0 0 0 16-3584
+chrM 4635 0 0 0 0 0 0 0 16-3584
+chrM 4636 0 0 0 0 0 0 0 16-3584
+chrM 4637 0 0 0 0 0 0 0 16-3584
+chrM 4638 0 0 0 0 0 0 0 16-3584
+chrM 4639 0 0 0 0 0 0 0 16-3584
+chrM 4640 0 0 0 0 0 0 0 16-3584
+chrM 4641 0 0 0 0 0 0 0 16-3584
+chrM 4642 0 0 0 0 0 0 0 16-3584
+chrM 4643 0 0 0 0 0 0 0 16-3584
+chrM 4644 0 0 0 0 0 0 0 16-3584
+chrM 4645 0 0 0 0 0 0 0 16-3584
+chrM 4646 0 0 0 0 0 0 0 16-3584
+chrM 4647 0 0 0 0 0 0 0 16-3584
+chrM 4648 0 0 0 0 0 0 0 16-3584
+chrM 4649 0 0 0 0 0 0 0 16-3584
+chrM 4650 0 0 0 0 0 0 0 16-3584
+chrM 4651 0 0 0 0 0 0 0 16-3584
+chrM 4652 0 0 0 0 0 0 0 16-3584
+chrM 4653 0 0 0 0 0 0 0 16-3584
+chrM 4654 0 0 0 0 0 0 0 16-3584
+chrM 4655 0 0 0 0 0 0 0 16-3584
+chrM 4656 0 0 0 0 0 0 0 16-3584
+chrM 4657 0 0 0 0 0 0 0 16-3584
+chrM 4658 0 0 0 0 0 0 0 16-3584
+chrM 4659 0 0 0 0 0 0 0 16-3584
+chrM 4660 0 0 0 0 0 0 0 16-3584
+chrM 4661 0 0 0 0 0 0 0 16-3584
+chrM 4662 0 0 0 0 0 0 0 16-3584
+chrM 4663 0 0 0 0 0 0 0 16-3584
+chrM 4664 0 0 0 0 0 0 0 16-3584
+chrM 4665 0 0 0 0 0 0 0 16-3584
+chrM 4666 0 0 0 0 0 0 0 16-3584
+chrM 4667 0 0 0 0 0 0 0 16-3584
+chrM 4668 0 0 0 0 0 0 0 16-3584
+chrM 4669 0 0 0 0 0 0 0 16-3584
+chrM 4670 0 0 0 0 0 0 0 16-3584
+chrM 4671 0 0 0 0 0 0 0 16-3584
+chrM 4672 0 0 0 0 0 0 0 16-3584
+chrM 4673 0 0 0 0 0 0 0 16-3584
+chrM 4674 0 0 0 0 0 0 0 16-3584
+chrM 4675 0 0 0 0 0 0 0 16-3584
+chrM 4676 0 0 0 0 0 0 0 16-3584
+chrM 4677 0 0 0 0 0 0 0 16-3584
+chrM 4678 0 0 0 0 0 0 0 16-3584
+chrM 4679 0 0 0 0 0 0 0 16-3584
+chrM 4680 0 0 0 0 0 0 0 16-3584
+chrM 4681 0 0 0 0 0 0 0 16-3584
+chrM 4682 0 0 0 0 0 0 0 16-3584
+chrM 4683 0 0 0 0 0 0 0 16-3584
+chrM 4684 0 0 0 0 0 0 0 16-3584
+chrM 4685 0 0 0 0 0 0 0 16-3584
+chrM 4686 0 0 0 0 0 0 0 16-3584
+chrM 4687 0 0 0 0 0 0 0 16-3584
+chrM 4688 0 0 0 0 0 0 0 16-3584
+chrM 4689 0 0 0 0 0 0 0 16-3584
+chrM 4690 0 0 0 0 0 0 0 16-3584
+chrM 4691 0 0 0 0 0 0 0 16-3584
+chrM 4692 0 0 0 0 0 0 0 16-3584
+chrM 4693 0 0 0 0 0 0 0 16-3584
+chrM 4694 0 0 0 0 0 0 0 16-3584
+chrM 4695 0 0 0 0 0 0 0 16-3584
+chrM 4696 0 0 0 0 0 0 0 16-3584
+chrM 4697 0 0 0 0 0 0 0 16-3584
+chrM 4698 0 0 0 0 0 0 0 16-3584
+chrM 4699 0 0 0 0 0 0 0 16-3584
+chrM 4700 0 0 0 0 0 0 0 16-3584
+chrM 4701 0 0 0 0 0 0 0 16-3584
+chrM 4702 0 0 0 0 0 0 0 16-3584
+chrM 4703 0 0 0 0 0 0 0 16-3584
+chrM 4704 0 0 0 0 0 0 0 16-3584
+chrM 4705 0 0 0 0 0 0 0 16-3584
+chrM 4706 0 0 0 0 0 0 0 16-3584
+chrM 4707 0 0 0 0 0 0 0 16-3584
+chrM 4708 0 0 0 0 0 0 0 16-3584
+chrM 4709 0 0 0 0 0 0 0 16-3584
+chrM 4710 0 0 0 0 0 0 0 16-3584
+chrM 4711 0 0 0 0 0 0 0 16-3584
+chrM 4712 0 0 0 0 0 0 0 16-3584
+chrM 4713 0 0 0 0 0 0 0 16-3584
+chrM 4714 0 0 0 0 0 0 0 16-3584
+chrM 4715 0 0 0 0 0 0 0 16-3584
+chrM 4716 0 0 0 0 0 0 0 16-3584
+chrM 4717 0 0 0 0 0 0 0 16-3584
+chrM 4718 0 0 0 0 0 0 0 16-3584
+chrM 4719 0 0 0 0 0 0 0 16-3584
+chrM 4720 0 0 0 0 0 0 0 16-3584
+chrM 4721 0 0 0 0 0 0 0 16-3584
+chrM 4722 0 0 0 0 0 0 0 16-3584
+chrM 4723 0 0 0 0 0 0 0 16-3584
+chrM 4724 0 0 0 0 0 0 0 16-3584
+chrM 4725 0 0 0 0 0 0 0 16-3584
+chrM 4726 0 0 0 0 0 0 0 16-3584
+chrM 4727 0 0 0 0 0 0 0 16-3584
+chrM 4728 0 0 0 0 0 0 0 16-3584
+chrM 4729 0 0 0 0 0 0 0 16-3584
+chrM 4730 0 0 0 0 0 0 0 16-3584
+chrM 4731 0 0 0 0 0 0 0 16-3584
+chrM 4732 0 0 0 0 0 0 0 16-3584
+chrM 4733 0 0 0 0 0 0 0 16-3584
+chrM 4734 0 0 0 0 0 0 0 16-3584
+chrM 4735 0 0 0 0 0 0 0 16-3584
+chrM 4736 0 0 0 0 0 0 0 16-3584
+chrM 4737 0 0 0 0 0 0 0 16-3584
+chrM 4738 0 0 0 0 0 0 0 16-3584
+chrM 4739 0 0 0 0 0 0 0 16-3584
+chrM 4740 0 0 0 0 0 0 0 16-3584
+chrM 4741 0 0 0 0 0 0 0 16-3584
+chrM 4742 0 0 0 0 0 0 0 16-3584
+chrM 4743 0 0 0 0 0 0 0 16-3584
+chrM 4744 0 0 0 0 0 0 0 16-3584
+chrM 4745 0 0 0 0 0 0 0 16-3584
+chrM 4746 0 0 0 0 0 0 0 16-3584
+chrM 4747 0 0 0 0 0 0 0 16-3584
+chrM 4748 0 0 0 0 0 0 0 16-3584
+chrM 4749 0 0 0 0 0 0 0 16-3584
+chrM 4750 0 0 0 0 0 0 0 16-3584
+chrM 4751 0 0 0 0 0 0 0 16-3584
+chrM 4752 0 0 0 0 0 0 0 16-3584
+chrM 4753 0 0 0 0 0 0 0 16-3584
+chrM 4754 0 0 0 0 0 0 0 16-3584
+chrM 4755 0 0 0 0 0 0 0 16-3584
+chrM 4756 0 0 0 0 0 0 0 16-3584
+chrM 4757 0 0 0 0 0 0 0 16-3584
+chrM 4758 0 0 0 0 0 0 0 16-3584
+chrM 4759 0 0 0 0 0 0 0 16-3584
+chrM 4760 0 0 0 0 0 0 0 16-3584
+chrM 4761 0 0 0 0 0 0 0 16-3584
+chrM 4762 0 0 0 0 0 0 0 16-3584
+chrM 4763 0 0 0 0 0 0 0 16-3584
+chrM 4764 0 0 0 0 0 0 0 16-3584
+chrM 4765 0 0 0 0 0 0 0 16-3584
+chrM 4766 0 0 0 0 0 0 0 16-3584
+chrM 4767 0 0 0 0 0 0 0 16-3584
+chrM 4768 0 0 0 0 0 0 0 16-3584
+chrM 4769 0 0 0 0 0 0 0 16-3584
+chrM 4770 0 0 0 0 0 0 0 16-3584
+chrM 4771 0 0 0 0 0 0 0 16-3584
+chrM 4772 0 0 0 0 0 0 0 16-3584
+chrM 4773 0 0 0 0 0 0 0 16-3584
+chrM 4774 0 0 0 0 0 0 0 16-3584
+chrM 4775 0 0 0 0 0 0 0 16-3584
+chrM 4776 0 0 0 0 0 0 0 16-3584
+chrM 4777 0 0 0 0 0 0 0 16-3584
+chrM 4778 0 0 0 0 0 0 0 16-3584
+chrM 4779 0 0 0 0 0 0 0 16-3584
+chrM 4780 0 0 0 0 0 0 0 16-3584
+chrM 4781 0 0 0 0 0 0 0 16-3584
+chrM 4782 0 0 0 0 0 0 0 16-3584
+chrM 4783 0 0 0 0 0 0 0 16-3584
+chrM 4784 0 0 0 0 0 0 0 16-3584
+chrM 4785 0 0 0 0 0 0 0 16-3584
+chrM 4786 0 0 0 0 0 0 0 16-3584
+chrM 4787 0 0 0 0 0 0 0 16-3584
+chrM 4788 0 0 0 0 0 0 0 16-3584
+chrM 4789 0 0 0 0 0 0 0 16-3584
+chrM 4790 0 0 0 0 0 0 0 16-3584
+chrM 4791 0 0 0 0 0 0 0 16-3584
+chrM 4792 0 0 0 0 0 0 0 16-3584
+chrM 4793 0 0 0 0 0 0 0 16-3584
+chrM 4794 0 0 0 0 0 0 0 16-3584
+chrM 4795 0 0 0 0 0 0 0 16-3584
+chrM 4796 0 0 0 0 0 0 0 16-3584
+chrM 4797 0 0 0 0 0 0 0 16-3584
+chrM 4798 0 0 0 0 0 0 0 16-3584
+chrM 4799 0 0 0 0 0 0 0 16-3584
+chrM 4800 0 0 0 0 0 0 0 16-3584
+chrM 4801 0 0 0 0 0 0 0 16-3584
+chrM 4802 0 0 0 0 0 0 0 16-3584
+chrM 4803 0 0 0 0 0 0 0 16-3584
+chrM 4804 0 0 0 0 0 0 0 16-3584
+chrM 4805 0 0 0 0 0 0 0 16-3584
+chrM 4806 0 0 0 0 0 0 0 16-3584
+chrM 4807 0 0 0 0 0 0 0 16-3584
+chrM 4808 0 0 0 0 0 0 0 16-3584
+chrM 4809 0 0 0 0 0 0 0 16-3584
+chrM 4810 0 0 0 0 0 0 0 16-3584
+chrM 4811 0 0 0 0 0 0 0 16-3584
+chrM 4812 0 0 0 0 0 0 0 16-3584
+chrM 4813 0 0 0 0 0 0 0 16-3584
+chrM 4814 2 0 2 0 0 0 0 16-3584
+chrM 4815 2 1 0 1 0 0 0 16-3584
+chrM 4816 2 0 1 1 0 0 0 16-3584
+chrM 4817 2 0 1 1 0 0 0 16-3584
+chrM 4818 2 0 0 0 2 0 0 16-3584
+chrM 4819 2 0 0 0 2 0 0 16-3584
+chrM 4820 2 0 0 0 2 0 0 16-3584
+chrM 4821 2 0 0 2 0 0 0 16-3584
+chrM 4822 2 0 0 0 2 0 0 16-3584
+chrM 4823 2 1 1 0 0 0 0 16-3584
+chrM 4824 2 1 1 0 0 0 0 16-3584
+chrM 4825 2 1 0 1 0 0 0 16-3584
+chrM 4826 2 1 0 0 1 0 0 16-3584
+chrM 4827 2 1 0 0 1 0 0 16-3584
+chrM 4828 2 0 0 1 1 0 0 16-3584
+chrM 4829 2 0 0 1 1 0 0 16-3584
+chrM 4830 2 0 1 0 1 0 0 16-3584
+chrM 4831 2 0 1 0 1 0 0 16-3584
+chrM 4832 4 0 2 2 0 0 0 16-3584
+chrM 4833 4 1 2 1 0 0 0 16-3584
+chrM 4834 4 2 1 1 0 0 0 16-3584
+chrM 4835 4 1 1 1 1 0 0 16-3584
+chrM 4836 4 3 0 0 1 0 0 16-3584
+chrM 4837 4 1 1 0 2 0 0 16-3584
+chrM 4838 4 0 2 2 0 0 0 16-3584
+chrM 4839 4 1 0 0 3 0 0 16-3584
+chrM 4840 4 0 0 3 1 0 0 16-3584
+chrM 4841 4 1 2 1 0 0 0 16-3584
+chrM 4842 4 0 1 1 2 0 0 16-3584
+chrM 4843 4 0 2 0 2 0 0 16-3584
+chrM 4844 4 2 1 1 0 0 0 16-3584
+chrM 4845 4 1 2 0 1 0 0 16-3584
+chrM 4846 4 1 2 0 1 0 0 16-3584
+chrM 4847 4 0 1 1 2 0 0 16-3584
+chrM 4848 4 1 0 2 1 0 0 16-3584
+chrM 4849 4 2 0 2 0 0 0 16-3584
+chrM 4850 4 2 1 1 0 0 0 16-3584
+chrM 4851 4 1 0 1 2 0 0 16-3584
+chrM 4852 4 1 0 3 0 0 0 16-3584
+chrM 4853 6 1 3 1 1 0 0 16-3584
+chrM 4854 6 0 1 1 4 0 0 16-3584
+chrM 4855 6 2 1 1 2 0 0 16-3584
+chrM 4856 6 1 0 2 3 0 0 16-3584
+chrM 4857 6 3 1 0 2 0 0 16-3584
+chrM 4858 6 0 3 1 2 0 0 16-3584
+chrM 4859 6 2 0 2 2 0 0 16-3584
+chrM 4860 6 1 1 1 3 0 0 16-3584
+chrM 4861 6 2 2 0 2 0 0 16-3584
+chrM 4862 6 3 1 1 1 0 0 16-3584
+chrM 4863 6 0 2 2 2 0 0 16-3584
+chrM 4864 6 1 2 2 1 0 0 16-3584
+chrM 4865 6 2 1 1 2 0 0 16-3584
+chrM 4866 6 3 2 0 1 0 0 16-3584
+chrM 4867 6 2 1 3 0 0 0 16-3584
+chrM 4868 6 3 0 2 1 0 0 16-3584
+chrM 4869 6 0 1 3 2 0 0 16-3584
+chrM 4870 6 1 1 2 2 0 0 16-3584
+chrM 4871 6 3 0 1 2 0 0 16-3584
+chrM 4872 6 1 3 1 1 0 0 16-3584
+chrM 4873 6 0 1 2 3 0 0 16-3584
+chrM 4874 6 4 0 0 2 0 0 16-3584
+chrM 4875 6 0 3 2 1 0 0 16-3584
+chrM 4876 6 0 3 2 1 0 0 16-3584
+chrM 4877 6 3 0 2 1 0 0 16-3584
+chrM 4878 6 5 1 0 0 0 0 16-3584
+chrM 4879 6 2 2 1 1 0 0 16-3584
+chrM 4880 6 2 2 1 1 0 0 16-3584
+chrM 4881 6 1 1 3 1 0 0 16-3584
+chrM 4882 6 1 1 2 2 0 0 16-3584
+chrM 4883 6 1 1 1 3 0 0 16-3584
+chrM 4884 6 1 1 2 2 0 0 16-3584
+chrM 4885 6 1 2 1 2 0 0 16-3584
+chrM 4886 6 1 3 0 2 0 0 16-3584
+chrM 4887 6 2 2 2 0 0 0 16-3584
+chrM 4888 6 2 1 1 2 0 0 16-3584
+chrM 4889 6 1 3 2 0 0 0 16-3584
+chrM 4890 6 1 2 1 2 0 0 16-3584
+chrM 4891 6 0 3 0 3 0 0 16-3584
+chrM 4892 6 2 4 0 0 0 0 16-3584
+chrM 4893 6 1 3 1 1 0 0 16-3584
+chrM 4894 6 3 1 1 1 0 0 16-3584
+chrM 4895 6 0 1 2 3 0 0 16-3584
+chrM 4896 6 1 1 3 1 0 0 16-3584
+chrM 4897 6 2 1 2 1 0 0 16-3584
+chrM 4898 6 3 3 0 0 0 0 16-3584
+chrM 4899 6 1 4 0 1 0 0 16-3584
+chrM 4900 6 2 0 2 2 0 0 16-3584
+chrM 4901 6 1 2 2 1 0 0 16-3584
+chrM 4902 6 1 3 1 1 0 0 16-3584
+chrM 4903 6 2 2 1 1 0 0 16-3584
+chrM 4904 6 0 2 3 1 0 0 16-3584
+chrM 4905 6 0 1 4 1 0 0 16-3584
+chrM 4906 6 3 0 1 2 0 0 16-3584
+chrM 4907 6 1 1 1 3 0 0 16-3584
+chrM 4908 6 1 0 1 4 0 0 16-3584
+chrM 4909 6 3 2 1 0 0 0 16-3584
+chrM 4910 6 2 3 0 1 0 0 16-3584
+chrM 4911 6 1 2 2 1 0 0 16-3584
+chrM 4912 6 0 3 2 1 0 0 16-3584
+chrM 4913 6 1 0 1 4 0 0 16-3584
+chrM 4914 6 1 1 0 4 0 0 16-3584
+chrM 4915 6 2 0 1 3 0 0 16-3584
+chrM 4916 6 1 2 1 2 0 0 16-3584
+chrM 4917 6 0 1 3 2 0 0 16-3584
+chrM 4918 6 4 1 1 0 0 0 16-3584
+chrM 4919 6 1 1 0 4 0 0 16-3584
+chrM 4920 6 3 0 2 1 0 0 16-3584
+chrM 4921 6 2 3 0 1 0 0 16-3584
+chrM 4922 6 2 0 1 3 0 0 16-3584
+chrM 4923 6 1 1 3 1 0 0 16-3584
+chrM 4924 6 1 2 1 2 0 0 16-3584
+chrM 4925 6 0 1 3 2 0 0 16-3584
+chrM 4926 6 2 2 0 2 0 0 16-3584
+chrM 4927 6 1 3 1 1 0 0 16-3584
+chrM 4928 6 1 1 2 2 0 0 16-3584
+chrM 4929 6 3 1 0 2 0 0 16-3584
+chrM 4930 6 3 1 1 1 0 0 16-3584
+chrM 4931 6 0 1 3 2 0 0 16-3584
+chrM 4932 6 1 3 0 2 0 0 16-3584
+chrM 4933 6 2 1 3 0 0 0 16-3584
+chrM 4934 6 1 4 0 1 0 0 16-3584
+chrM 4935 6 1 1 2 2 0 0 16-3584
+chrM 4936 6 1 3 0 2 0 0 16-3584
+chrM 4937 6 3 0 1 2 0 0 16-3584
+chrM 4938 6 1 2 1 2 0 0 16-3584
+chrM 4939 6 1 3 1 1 0 0 16-3584
+chrM 4940 6 3 2 1 0 0 0 16-3584
+chrM 4941 6 2 1 1 2 0 0 16-3584
+chrM 4942 6 1 3 0 2 0 0 16-3584
+chrM 4943 6 3 1 1 1 0 0 16-3584
+chrM 4944 6 1 1 2 2 0 0 16-3584
+chrM 4945 6 0 3 0 3 0 0 16-3584
+chrM 4946 6 2 1 1 2 0 0 16-3584
+chrM 4947 6 1 3 0 2 0 0 16-3584
+chrM 4948 6 1 3 0 2 0 0 16-3584
+chrM 4949 6 1 3 1 1 0 0 16-3584
+chrM 4950 6 2 2 1 1 0 0 16-3584
+chrM 4951 6 2 0 3 1 0 0 16-3584
+chrM 4952 6 3 3 0 0 0 0 16-3584
+chrM 4953 6 1 2 2 1 0 0 16-3584
+chrM 4954 6 2 1 3 0 0 0 16-3584
+chrM 4955 6 3 1 0 2 0 0 16-3584
+chrM 4956 6 0 1 1 4 0 0 16-3584
+chrM 4957 6 1 0 2 3 0 0 16-3584
+chrM 4958 4 0 2 2 0 0 0 16-3584
+chrM 4959 4 2 1 1 0 0 0 16-3584
+chrM 4960 4 0 2 0 2 0 0 16-3584
+chrM 4961 4 2 1 0 1 0 0 16-3584
+chrM 4962 4 1 0 1 2 0 0 16-3584
+chrM 4963 4 1 0 1 2 0 0 16-3584
+chrM 4964 4 1 1 1 1 0 0 16-3584
+chrM 4965 4 1 2 0 1 0 0 16-3584
+chrM 4966 4 1 0 3 0 0 0 16-3584
+chrM 4967 4 1 1 0 2 0 0 16-3584
+chrM 4968 4 2 0 0 2 0 0 16-3584
+chrM 4969 4 0 2 1 1 0 0 16-3584
+chrM 4970 4 1 1 1 1 0 0 16-3584
+chrM 4971 4 2 0 0 2 0 0 16-3584
+chrM 4972 4 0 1 1 2 0 0 16-3584
+chrM 4973 4 1 1 1 1 0 0 16-3584
+chrM 4974 4 3 1 0 0 0 0 16-3584
+chrM 4975 4 3 0 1 0 0 0 16-3584
+chrM 4976 4 0 1 1 2 0 0 16-3584
+chrM 4977 4 0 3 0 1 0 0 16-3584
+chrM 4978 2 0 0 2 0 0 0 16-3584
+chrM 4979 2 1 1 0 0 0 0 16-3584
+chrM 4980 2 0 2 0 0 0 0 16-3584
+chrM 4981 2 1 0 1 0 0 0 16-3584
+chrM 4982 2 0 0 0 2 0 0 16-3584
+chrM 4983 2 0 0 0 2 0 0 16-3584
+chrM 4984 2 0 1 0 1 0 0 16-3584
+chrM 4985 2 0 1 0 1 0 0 16-3584
+chrM 4986 2 2 0 0 0 0 0 16-3584
+chrM 4987 2 1 1 0 0 0 0 16-3584
+chrM 4988 2 2 0 0 0 0 0 16-3584
+chrM 4989 2 1 0 0 1 0 0 16-3584
+chrM 4990 2 1 0 0 1 0 0 16-3584
+chrM 4991 2 1 0 0 1 0 0 16-3584
+chrM 4992 2 1 1 0 0 0 0 16-3584
+chrM 4993 2 1 1 0 0 0 0 16-3584
+chrM 4994 2 1 1 0 0 0 0 16-3584
+chrM 4995 2 2 0 0 0 0 0 16-3584
+chrM 4996 2 0 0 1 1 0 0 16-3584
+chrM 4997 2 0 0 0 2 0 0 16-3584
+chrM 4998 2 1 0 0 1 0 0 16-3584
+chrM 4999 0 0 0 0 0 0 0 16-3584
+chrM 5000 0 0 0 0 0 0 0 16-3584
+chrM 5001 0 0 0 0 0 0 0 16-3584
+chrM 5002 0 0 0 0 0 0 0 16-3584
+chrM 5003 0 0 0 0 0 0 0 16-3584
+chrM 5004 0 0 0 0 0 0 0 16-3584
+chrM 5005 0 0 0 0 0 0 0 16-3584
+chrM 5006 0 0 0 0 0 0 0 16-3584
+chrM 5007 0 0 0 0 0 0 0 16-3584
+chrM 5008 0 0 0 0 0 0 0 16-3584
+chrM 5009 0 0 0 0 0 0 0 16-3584
+chrM 5010 0 0 0 0 0 0 0 16-3584
+chrM 5011 0 0 0 0 0 0 0 16-3584
+chrM 5012 0 0 0 0 0 0 0 16-3584
+chrM 5013 0 0 0 0 0 0 0 16-3584
+chrM 5014 0 0 0 0 0 0 0 16-3584
+chrM 5015 0 0 0 0 0 0 0 16-3584
+chrM 5016 0 0 0 0 0 0 0 16-3584
+chrM 5017 0 0 0 0 0 0 0 16-3584
+chrM 5018 0 0 0 0 0 0 0 16-3584
+chrM 5019 0 0 0 0 0 0 0 16-3584
+chrM 5020 0 0 0 0 0 0 0 16-3584
+chrM 5021 0 0 0 0 0 0 0 16-3584
+chrM 5022 0 0 0 0 0 0 0 16-3584
+chrM 5023 0 0 0 0 0 0 0 16-3584
+chrM 5024 0 0 0 0 0 0 0 16-3584
+chrM 5025 0 0 0 0 0 0 0 16-3584
+chrM 5026 0 0 0 0 0 0 0 16-3584
+chrM 5027 0 0 0 0 0 0 0 16-3584
+chrM 5028 0 0 0 0 0 0 0 16-3584
+chrM 5029 0 0 0 0 0 0 0 16-3584
+chrM 5030 0 0 0 0 0 0 0 16-3584
+chrM 5031 0 0 0 0 0 0 0 16-3584
+chrM 5032 0 0 0 0 0 0 0 16-3584
+chrM 5033 0 0 0 0 0 0 0 16-3584
+chrM 5034 0 0 0 0 0 0 0 16-3584
+chrM 5035 0 0 0 0 0 0 0 16-3584
+chrM 5036 0 0 0 0 0 0 0 16-3584
+chrM 5037 0 0 0 0 0 0 0 16-3584
+chrM 5038 0 0 0 0 0 0 0 16-3584
+chrM 5039 0 0 0 0 0 0 0 16-3584
+chrM 5040 0 0 0 0 0 0 0 16-3584
+chrM 5041 0 0 0 0 0 0 0 16-3584
+chrM 5042 0 0 0 0 0 0 0 16-3584
+chrM 5043 0 0 0 0 0 0 0 16-3584
+chrM 5044 0 0 0 0 0 0 0 16-3584
+chrM 5045 0 0 0 0 0 0 0 16-3584
+chrM 5046 0 0 0 0 0 0 0 16-3584
+chrM 5047 0 0 0 0 0 0 0 16-3584
+chrM 5048 0 0 0 0 0 0 0 16-3584
+chrM 5049 0 0 0 0 0 0 0 16-3584
+chrM 5050 0 0 0 0 0 0 0 16-3584
+chrM 5051 0 0 0 0 0 0 0 16-3584
+chrM 5052 0 0 0 0 0 0 0 16-3584
+chrM 5053 0 0 0 0 0 0 0 16-3584
+chrM 5054 0 0 0 0 0 0 0 16-3584
+chrM 5055 0 0 0 0 0 0 0 16-3584
+chrM 5056 0 0 0 0 0 0 0 16-3584
+chrM 5057 0 0 0 0 0 0 0 16-3584
+chrM 5058 0 0 0 0 0 0 0 16-3584
+chrM 5059 0 0 0 0 0 0 0 16-3584
+chrM 5060 0 0 0 0 0 0 0 16-3584
+chrM 5061 0 0 0 0 0 0 0 16-3584
+chrM 5062 0 0 0 0 0 0 0 16-3584
+chrM 5063 0 0 0 0 0 0 0 16-3584
+chrM 5064 0 0 0 0 0 0 0 16-3584
+chrM 5065 0 0 0 0 0 0 0 16-3584
+chrM 5066 0 0 0 0 0 0 0 16-3584
+chrM 5067 0 0 0 0 0 0 0 16-3584
+chrM 5068 0 0 0 0 0 0 0 16-3584
+chrM 5069 1 0 1 0 0 0 0 16-3584
+chrM 5070 1 0 0 0 1 0 0 16-3584
+chrM 5071 1 0 1 0 0 0 0 16-3584
+chrM 5072 1 0 1 0 0 0 0 16-3584
+chrM 5073 1 0 0 1 0 0 0 16-3584
+chrM 5074 1 0 1 0 0 0 0 16-3584
+chrM 5075 1 1 0 0 0 0 0 16-3584
+chrM 5076 1 0 0 1 0 0 0 16-3584
+chrM 5077 1 1 0 0 0 0 0 16-3584
+chrM 5078 1 0 0 0 1 0 0 16-3584
+chrM 5079 1 0 0 0 1 0 0 16-3584
+chrM 5080 1 1 0 0 0 0 0 16-3584
+chrM 5081 1 0 1 0 0 0 0 16-3584
+chrM 5082 2 1 0 0 1 0 0 16-3584
+chrM 5083 2 2 0 0 0 0 0 16-3584
+chrM 5084 2 1 0 1 0 0 0 16-3584
+chrM 5085 2 0 1 1 0 0 0 16-3584
+chrM 5086 2 1 0 0 1 0 0 16-3584
+chrM 5087 2 0 1 0 1 0 0 16-3584
+chrM 5088 2 0 2 0 0 0 0 16-3584
+chrM 5089 2 1 1 0 0 0 0 16-3584
+chrM 5090 2 2 0 0 0 0 0 16-3584
+chrM 5091 2 0 1 1 0 0 0 16-3584
+chrM 5092 2 0 1 1 0 0 0 16-3584
+chrM 5093 2 1 0 0 1 0 0 16-3584
+chrM 5094 2 1 1 0 0 0 0 16-3584
+chrM 5095 2 0 0 1 1 0 0 16-3584
+chrM 5096 2 1 0 1 0 0 0 16-3584
+chrM 5097 2 0 1 0 1 0 0 16-3584
+chrM 5098 2 0 2 0 0 0 0 16-3584
+chrM 5099 2 1 1 0 0 0 0 16-3584
+chrM 5100 2 0 1 0 1 0 0 16-3584
+chrM 5101 2 0 1 0 1 0 0 16-3584
+chrM 5102 2 1 0 0 1 0 0 16-3584
+chrM 5103 2 1 0 0 1 0 0 16-3584
+chrM 5104 2 0 0 1 1 0 0 16-3584
+chrM 5105 2 0 1 1 0 0 0 16-3584
+chrM 5106 2 0 0 1 1 0 0 16-3584
+chrM 5107 2 0 1 0 1 0 0 16-3584
+chrM 5108 2 1 0 1 0 0 0 16-3584
+chrM 5109 2 1 1 0 0 0 0 16-3584
+chrM 5110 2 0 1 0 1 0 0 16-3584
+chrM 5111 2 1 0 0 1 0 0 16-3584
+chrM 5112 2 2 0 0 0 0 0 16-3584
+chrM 5113 2 0 1 1 0 0 0 16-3584
+chrM 5114 2 0 0 1 1 0 0 16-3584
+chrM 5115 2 0 2 0 0 0 0 16-3584
+chrM 5116 2 0 0 0 2 0 0 16-3584
+chrM 5117 2 1 1 0 0 0 0 16-3584
+chrM 5118 2 0 0 2 0 0 0 16-3584
+chrM 5119 2 0 2 0 0 0 0 16-3584
+chrM 5120 2 0 0 1 1 0 0 16-3584
+chrM 5121 2 0 0 2 0 0 0 16-3584
+chrM 5122 2 1 1 0 0 0 0 16-3584
+chrM 5123 2 0 1 1 0 0 0 16-3584
+chrM 5124 2 0 2 0 0 0 0 16-3584
+chrM 5125 2 0 1 0 1 0 0 16-3584
+chrM 5126 2 1 0 1 0 0 0 16-3584
+chrM 5127 2 1 1 0 0 0 0 16-3584
+chrM 5128 2 0 0 0 2 0 0 16-3584
+chrM 5129 2 1 1 0 0 0 0 16-3584
+chrM 5130 2 0 1 1 0 0 0 16-3584
+chrM 5131 2 1 0 0 1 0 0 16-3584
+chrM 5132 2 0 1 0 1 0 0 16-3584
+chrM 5133 2 0 0 1 1 0 0 16-3584
+chrM 5134 2 1 1 0 0 0 0 16-3584
+chrM 5135 2 0 0 1 1 0 0 16-3584
+chrM 5136 2 0 0 0 2 0 0 16-3584
+chrM 5137 2 1 0 1 0 0 0 16-3584
+chrM 5138 2 0 0 1 1 0 0 16-3584
+chrM 5139 2 1 0 1 0 0 0 16-3584
+chrM 5140 2 0 2 0 0 0 0 16-3584
+chrM 5141 2 1 0 1 0 0 0 16-3584
+chrM 5142 2 0 0 1 1 0 0 16-3584
+chrM 5143 2 0 0 0 2 0 0 16-3584
+chrM 5144 2 0 0 2 0 0 0 16-3584
+chrM 5145 2 0 0 0 2 0 0 16-3584
+chrM 5146 2 0 0 2 0 0 0 16-3584
+chrM 5147 2 0 0 0 2 0 0 16-3584
+chrM 5148 2 1 0 0 1 0 0 16-3584
+chrM 5149 2 1 0 0 1 0 0 16-3584
+chrM 5150 2 2 0 0 0 0 0 16-3584
+chrM 5151 2 1 0 0 1 0 0 16-3584
+chrM 5152 2 0 1 1 0 0 0 16-3584
+chrM 5153 2 0 1 1 0 0 0 16-3584
+chrM 5154 2 0 0 0 2 0 0 16-3584
+chrM 5155 2 1 0 0 1 0 0 16-3584
+chrM 5156 2 0 1 1 0 0 0 16-3584
+chrM 5157 2 0 1 0 1 0 0 16-3584
+chrM 5158 2 1 0 0 1 0 0 16-3584
+chrM 5159 2 1 1 0 0 0 0 16-3584
+chrM 5160 2 1 0 1 0 0 0 16-3584
+chrM 5161 2 0 0 1 1 0 0 16-3584
+chrM 5162 2 1 0 1 0 0 0 16-3584
+chrM 5163 2 1 0 1 0 0 0 16-3584
+chrM 5164 2 0 0 2 0 0 0 16-3584
+chrM 5165 2 0 0 2 0 0 0 16-3584
+chrM 5166 2 1 0 1 0 0 0 16-3584
+chrM 5167 2 0 0 1 1 0 0 16-3584
+chrM 5168 2 1 0 1 0 0 0 16-3584
+chrM 5169 2 1 1 0 0 0 0 16-3584
+chrM 5170 2 0 0 1 1 0 0 16-3584
+chrM 5171 2 0 1 1 0 0 0 16-3584
+chrM 5172 2 0 0 0 2 0 0 16-3584
+chrM 5173 2 1 0 1 0 0 0 16-3584
+chrM 5174 2 0 1 0 1 0 0 16-3584
+chrM 5175 2 1 1 0 0 0 0 16-3584
+chrM 5176 2 0 1 1 0 0 0 16-3584
+chrM 5177 2 0 1 0 1 0 0 16-3584
+chrM 5178 2 1 1 0 0 0 0 16-3584
+chrM 5179 2 0 1 1 0 0 0 16-3584
+chrM 5180 2 0 1 1 0 0 0 16-3584
+chrM 5181 2 1 0 0 1 0 0 16-3584
+chrM 5182 2 1 1 0 0 0 0 16-3584
+chrM 5183 2 1 0 1 0 0 0 16-3584
+chrM 5184 2 0 2 0 0 0 0 16-3584
+chrM 5185 2 1 1 0 0 0 0 16-3584
+chrM 5186 2 0 0 2 0 0 0 16-3584
+chrM 5187 2 2 0 0 0 0 0 16-3584
+chrM 5188 2 0 0 2 0 0 0 16-3584
+chrM 5189 2 0 0 2 0 0 0 16-3584
+chrM 5190 2 1 1 0 0 0 0 16-3584
+chrM 5191 2 1 1 0 0 0 0 16-3584
+chrM 5192 2 1 0 0 1 0 0 16-3584
+chrM 5193 2 0 1 0 1 0 0 16-3584
+chrM 5194 2 1 0 1 0 0 0 16-3584
+chrM 5195 2 1 0 0 1 0 0 16-3584
+chrM 5196 2 0 1 1 0 0 0 16-3584
+chrM 5197 2 0 1 1 0 0 0 16-3584
+chrM 5198 2 0 1 0 1 0 0 16-3584
+chrM 5199 2 1 1 0 0 0 0 16-3584
+chrM 5200 2 0 1 1 0 0 0 16-3584
+chrM 5201 2 0 0 1 1 0 0 16-3584
+chrM 5202 2 0 1 0 1 0 0 16-3584
+chrM 5203 2 0 0 0 2 0 0 16-3584
+chrM 5204 2 1 0 1 0 0 0 16-3584
+chrM 5205 2 2 0 0 0 0 0 16-3584
+chrM 5206 2 2 0 0 0 0 0 16-3584
+chrM 5207 2 0 0 0 2 0 0 16-3584
+chrM 5208 2 1 0 0 1 0 0 16-3584
+chrM 5209 2 2 0 0 0 0 0 16-3584
+chrM 5210 2 0 1 1 0 0 0 16-3584
+chrM 5211 2 2 0 0 0 0 0 16-3584
+chrM 5212 2 1 1 0 0 0 0 16-3584
+chrM 5213 2 0 2 0 0 0 0 16-3584
+chrM 5214 2 0 0 1 1 0 0 16-3584
+chrM 5215 0 0 0 0 0 0 0 16-3584
+chrM 5216 0 0 0 0 0 0 0 16-3584
+chrM 5217 0 0 0 0 0 0 0 16-3584
+chrM 5218 0 0 0 0 0 0 0 16-3584
+chrM 5219 0 0 0 0 0 0 0 16-3584
+chrM 5220 0 0 0 0 0 0 0 16-3584
+chrM 5221 0 0 0 0 0 0 0 16-3584
+chrM 5222 0 0 0 0 0 0 0 16-3584
+chrM 5223 0 0 0 0 0 0 0 16-3584
+chrM 5224 0 0 0 0 0 0 0 16-3584
+chrM 5225 0 0 0 0 0 0 0 16-3584
+chrM 5226 0 0 0 0 0 0 0 16-3584
+chrM 5227 0 0 0 0 0 0 0 16-3584
+chrM 5228 0 0 0 0 0 0 0 16-3584
+chrM 5229 1 0 0 1 0 0 0 16-3584
+chrM 5230 1 1 0 0 0 0 0 16-3584
+chrM 5231 1 1 0 0 0 0 0 16-3584
+chrM 5232 1 0 1 0 0 0 0 16-3584
+chrM 5233 1 0 1 0 0 0 0 16-3584
+chrM 5234 1 0 0 0 1 0 0 16-3584
+chrM 5235 1 0 0 1 0 0 0 16-3584
+chrM 5236 1 0 0 1 0 0 0 16-3584
+chrM 5237 1 1 0 0 0 0 0 16-3584
+chrM 5238 1 1 0 0 0 0 0 16-3584
+chrM 5239 1 0 0 0 1 0 0 16-3584
+chrM 5240 1 0 0 1 0 0 0 16-3584
+chrM 5241 1 0 0 0 1 0 0 16-3584
+chrM 5242 1 0 1 0 0 0 0 16-3584
+chrM 5243 1 0 0 1 0 0 0 16-3584
+chrM 5244 1 0 1 0 0 0 0 16-3584
+chrM 5245 1 1 0 0 0 0 0 16-3584
+chrM 5246 1 0 0 0 1 0 0 16-3584
+chrM 5247 1 0 0 1 0 0 0 16-3584
+chrM 5248 1 0 0 1 0 0 0 16-3584
+chrM 5249 1 0 0 1 0 0 0 16-3584
+chrM 5250 1 1 0 0 0 0 0 16-3584
+chrM 5251 1 0 0 0 1 0 0 16-3584
+chrM 5252 1 0 0 1 0 0 0 16-3584
+chrM 5253 1 0 1 0 0 0 0 16-3584
+chrM 5254 1 1 0 0 0 0 0 16-3584
+chrM 5255 1 0 1 0 0 0 0 16-3584
+chrM 5256 1 0 0 0 1 0 0 16-3584
+chrM 5257 1 0 0 0 1 0 0 16-3584
+chrM 5258 1 0 1 0 0 0 0 16-3584
+chrM 5259 1 0 0 0 1 0 0 16-3584
+chrM 5260 1 0 1 0 0 0 0 16-3584
+chrM 5261 1 1 0 0 0 0 0 16-3584
+chrM 5262 1 0 0 1 0 0 0 16-3584
+chrM 5263 1 1 0 0 0 0 0 16-3584
+chrM 5264 1 0 1 0 0 0 0 16-3584
+chrM 5265 1 0 0 0 1 0 0 16-3584
+chrM 5266 1 0 0 0 1 0 0 16-3584
+chrM 5267 1 0 0 1 0 0 0 16-3584
+chrM 5268 1 0 0 0 1 0 0 16-3584
+chrM 5269 1 1 0 0 0 0 0 16-3584
+chrM 5270 1 0 1 0 0 0 0 16-3584
+chrM 5271 1 1 0 0 0 0 0 16-3584
+chrM 5272 1 1 0 0 0 0 0 16-3584
+chrM 5273 1 1 0 0 0 0 0 16-3584
+chrM 5274 1 1 0 0 0 0 0 16-3584
+chrM 5275 1 0 1 0 0 0 0 16-3584
+chrM 5276 1 1 0 0 0 0 0 16-3584
+chrM 5277 1 0 0 0 1 0 0 16-3584
+chrM 5278 1 0 0 0 1 0 0 16-3584
+chrM 5279 1 1 0 0 0 0 0 16-3584
+chrM 5280 1 1 0 0 0 0 0 16-3584
+chrM 5281 1 0 0 1 0 0 0 16-3584
+chrM 5282 1 0 0 1 0 0 0 16-3584
+chrM 5283 1 0 0 0 1 0 0 16-3584
+chrM 5284 1 0 0 1 0 0 0 16-3584
+chrM 5285 1 0 0 1 0 0 0 16-3584
+chrM 5286 1 1 0 0 0 0 0 16-3584
+chrM 5287 1 0 0 1 0 0 0 16-3584
+chrM 5288 1 0 1 0 0 0 0 16-3584
+chrM 5289 1 0 0 1 0 0 0 16-3584
+chrM 5290 1 1 0 0 0 0 0 16-3584
+chrM 5291 1 0 0 0 1 0 0 16-3584
+chrM 5292 1 0 0 1 0 0 0 16-3584
+chrM 5293 1 0 0 0 1 0 0 16-3584
+chrM 5294 1 1 0 0 0 0 0 16-3584
+chrM 5295 1 0 0 1 0 0 0 16-3584
+chrM 5296 1 0 0 0 1 0 0 16-3584
+chrM 5297 1 0 1 0 0 0 0 16-3584
+chrM 5298 1 0 0 1 0 0 0 16-3584
+chrM 5299 1 1 0 0 0 0 0 16-3584
+chrM 5300 1 0 0 0 1 0 0 16-3584
+chrM 5301 1 0 0 1 0 0 0 16-3584
+chrM 5302 1 0 0 0 1 0 0 16-3584
+chrM 5303 1 0 0 1 0 0 0 16-3584
+chrM 5304 1 0 0 1 0 0 0 16-3584
+chrM 5305 1 0 0 1 0 0 0 16-3584
+chrM 5306 1 0 1 0 0 0 0 16-3584
+chrM 5307 1 0 0 1 0 0 0 16-3584
+chrM 5308 1 0 0 0 1 0 0 16-3584
+chrM 5309 1 0 0 0 1 0 0 16-3584
+chrM 5310 1 0 1 0 0 0 0 16-3584
+chrM 5311 1 1 0 0 0 0 0 16-3584
+chrM 5312 1 0 0 0 1 0 0 16-3584
+chrM 5313 1 0 0 0 1 0 0 16-3584
+chrM 5314 1 0 0 0 1 0 0 16-3584
+chrM 5315 1 0 1 0 0 0 0 16-3584
+chrM 5316 1 0 0 1 0 0 0 16-3584
+chrM 5317 1 0 0 1 0 0 0 16-3584
+chrM 5318 1 1 0 0 0 0 0 16-3584
+chrM 5319 1 1 0 0 0 0 0 16-3584
+chrM 5320 1 0 1 0 0 0 0 16-3584
+chrM 5321 1 1 0 0 0 0 0 16-3584
+chrM 5322 1 1 0 0 0 0 0 16-3584
+chrM 5323 1 1 0 0 0 0 0 16-3584
+chrM 5324 1 0 1 0 0 0 0 16-3584
+chrM 5325 1 0 1 0 0 0 0 16-3584
+chrM 5326 1 0 1 0 0 0 0 16-3584
+chrM 5327 1 0 0 1 0 0 0 16-3584
+chrM 5328 1 1 0 0 0 0 0 16-3584
+chrM 5329 1 0 0 1 0 0 0 16-3584
+chrM 5330 1 0 0 0 1 0 0 16-3584
+chrM 5331 1 0 1 0 0 0 0 16-3584
+chrM 5332 1 1 0 0 0 0 0 16-3584
+chrM 5333 1 0 0 0 1 0 0 16-3584
+chrM 5334 1 0 0 1 0 0 0 16-3584
+chrM 5335 1 0 0 0 1 0 0 16-3584
+chrM 5336 1 0 0 0 1 0 0 16-3584
+chrM 5337 1 0 0 0 1 0 0 16-3584
+chrM 5338 1 0 0 1 0 0 0 16-3584
+chrM 5339 1 0 0 1 0 0 0 16-3584
+chrM 5340 1 0 1 0 0 0 0 16-3584
+chrM 5341 1 0 1 0 0 0 0 16-3584
+chrM 5342 1 0 0 0 1 0 0 16-3584
+chrM 5343 1 1 0 0 0 0 0 16-3584
+chrM 5344 1 1 0 0 0 0 0 16-3584
+chrM 5345 1 1 0 0 0 0 0 16-3584
+chrM 5346 1 1 0 0 0 0 0 16-3584
+chrM 5347 1 0 1 0 0 0 0 16-3584
+chrM 5348 1 0 1 0 0 0 0 16-3584
+chrM 5349 1 0 0 1 0 0 0 16-3584
+chrM 5350 1 1 0 0 0 0 0 16-3584
+chrM 5351 1 1 0 0 0 0 0 16-3584
+chrM 5352 1 0 0 1 0 0 0 16-3584
+chrM 5353 1 0 1 0 0 0 0 16-3584
+chrM 5354 1 1 0 0 0 0 0 16-3584
+chrM 5355 1 0 0 1 0 0 0 16-3584
+chrM 5356 1 0 0 1 0 0 0 16-3584
+chrM 5357 1 0 1 0 0 0 0 16-3584
+chrM 5358 1 0 0 1 0 0 0 16-3584
+chrM 5359 1 0 0 1 0 0 0 16-3584
+chrM 5360 1 0 0 1 0 0 0 16-3584
+chrM 5361 1 0 1 0 0 0 0 16-3584
+chrM 5362 1 1 0 0 0 0 0 16-3584
+chrM 5363 1 0 1 0 0 0 0 16-3584
+chrM 5364 1 0 0 1 0 0 0 16-3584
+chrM 5365 1 0 1 0 0 0 0 16-3584
+chrM 5366 1 0 1 0 0 0 0 16-3584
+chrM 5367 1 0 1 0 0 0 0 16-3584
+chrM 5368 1 0 0 0 1 0 0 16-3584
+chrM 5369 1 0 1 0 0 0 0 16-3584
+chrM 5370 1 0 1 0 0 0 0 16-3584
+chrM 5371 1 0 0 1 0 0 0 16-3584
+chrM 5372 1 0 1 0 0 0 0 16-3584
+chrM 5373 0 0 0 0 0 0 0 16-3584
+chrM 5374 0 0 0 0 0 0 0 16-3584
+chrM 5375 0 0 0 0 0 0 0 16-3584
+chrM 5376 0 0 0 0 0 0 0 16-3584
+chrM 5377 0 0 0 0 0 0 0 16-3584
+chrM 5378 0 0 0 0 0 0 0 16-3584
+chrM 5379 0 0 0 0 0 0 0 16-3584
+chrM 5380 0 0 0 0 0 0 0 16-3584
+chrM 5381 0 0 0 0 0 0 0 16-3584
+chrM 5382 0 0 0 0 0 0 0 16-3584
+chrM 5383 0 0 0 0 0 0 0 16-3584
+chrM 5384 0 0 0 0 0 0 0 16-3584
+chrM 5385 0 0 0 0 0 0 0 16-3584
+chrM 5386 0 0 0 0 0 0 0 16-3584
+chrM 5387 0 0 0 0 0 0 0 16-3584
+chrM 5388 0 0 0 0 0 0 0 16-3584
+chrM 5389 0 0 0 0 0 0 0 16-3584
+chrM 5390 0 0 0 0 0 0 0 16-3584
+chrM 5391 0 0 0 0 0 0 0 16-3584
+chrM 5392 0 0 0 0 0 0 0 16-3584
+chrM 5393 0 0 0 0 0 0 0 16-3584
+chrM 5394 0 0 0 0 0 0 0 16-3584
+chrM 5395 0 0 0 0 0 0 0 16-3584
+chrM 5396 0 0 0 0 0 0 0 16-3584
+chrM 5397 0 0 0 0 0 0 0 16-3584
+chrM 5398 0 0 0 0 0 0 0 16-3584
+chrM 5399 0 0 0 0 0 0 0 16-3584
+chrM 5400 0 0 0 0 0 0 0 16-3584
+chrM 5401 0 0 0 0 0 0 0 16-3584
+chrM 5402 0 0 0 0 0 0 0 16-3584
+chrM 5403 0 0 0 0 0 0 0 16-3584
+chrM 5404 0 0 0 0 0 0 0 16-3584
+chrM 5405 0 0 0 0 0 0 0 16-3584
+chrM 5406 0 0 0 0 0 0 0 16-3584
+chrM 5407 0 0 0 0 0 0 0 16-3584
+chrM 5408 0 0 0 0 0 0 0 16-3584
+chrM 5409 0 0 0 0 0 0 0 16-3584
+chrM 5410 0 0 0 0 0 0 0 16-3584
+chrM 5411 0 0 0 0 0 0 0 16-3584
+chrM 5412 0 0 0 0 0 0 0 16-3584
+chrM 5413 1 0 1 0 0 0 0 16-3584
+chrM 5414 1 1 0 0 0 0 0 16-3584
+chrM 5415 1 0 1 0 0 0 0 16-3584
+chrM 5416 1 0 0 1 0 0 0 16-3584
+chrM 5417 1 0 0 1 0 0 0 16-3584
+chrM 5418 1 1 0 0 0 0 0 16-3584
+chrM 5419 1 0 0 0 1 0 0 16-3584
+chrM 5420 1 1 0 0 0 0 0 16-3584
+chrM 5421 1 0 1 0 0 0 0 16-3584
+chrM 5422 1 0 1 0 0 0 0 16-3584
+chrM 5423 1 0 0 1 0 0 0 16-3584
+chrM 5424 1 0 1 0 0 0 0 16-3584
+chrM 5425 1 0 1 0 0 0 0 16-3584
+chrM 5426 1 0 1 0 0 0 0 16-3584
+chrM 5427 1 0 0 1 0 0 0 16-3584
+chrM 5428 1 0 1 0 0 0 0 16-3584
+chrM 5429 1 0 1 0 0 0 0 16-3584
+chrM 5430 1 0 1 0 0 0 0 16-3584
+chrM 5431 1 0 0 1 0 0 0 16-3584
+chrM 5432 1 1 0 0 0 0 0 16-3584
+chrM 5433 1 0 1 0 0 0 0 16-3584
+chrM 5434 1 0 0 0 1 0 0 16-3584
+chrM 5435 1 0 0 0 1 0 0 16-3584
+chrM 5436 1 0 1 0 0 0 0 16-3584
+chrM 5437 1 0 0 1 0 0 0 16-3584
+chrM 5438 1 1 0 0 0 0 0 16-3584
+chrM 5439 1 0 1 0 0 0 0 16-3584
+chrM 5440 1 0 0 0 1 0 0 16-3584
+chrM 5441 1 0 0 0 1 0 0 16-3584
+chrM 5442 1 0 0 1 0 0 0 16-3584
+chrM 5443 1 1 0 0 0 0 0 16-3584
+chrM 5444 1 0 0 1 0 0 0 16-3584
+chrM 5445 1 0 0 0 1 0 0 16-3584
+chrM 5446 1 0 0 1 0 0 0 16-3584
+chrM 5447 1 0 0 1 0 0 0 16-3584
+chrM 5448 1 1 0 0 0 0 0 16-3584
+chrM 5449 1 0 1 0 0 0 0 16-3584
+chrM 5450 1 1 0 0 0 0 0 16-3584
+chrM 5451 1 0 1 0 0 0 0 16-3584
+chrM 5452 1 1 0 0 0 0 0 16-3584
+chrM 5453 1 0 0 0 1 0 0 16-3584
+chrM 5454 1 0 1 0 0 0 0 16-3584
+chrM 5455 1 1 0 0 0 0 0 16-3584
+chrM 5456 1 1 0 0 0 0 0 16-3584
+chrM 5457 1 0 0 0 1 0 0 16-3584
+chrM 5458 1 1 0 0 0 0 0 16-3584
+chrM 5459 1 0 0 0 1 0 0 16-3584
+chrM 5460 1 0 0 1 0 0 0 16-3584
+chrM 5461 1 0 0 0 1 0 0 16-3584
+chrM 5462 1 0 0 0 1 0 0 16-3584
+chrM 5463 1 0 1 0 0 0 0 16-3584
+chrM 5464 1 0 0 0 1 0 0 16-3584
+chrM 5465 1 0 0 0 1 0 0 16-3584
+chrM 5466 1 0 1 0 0 0 0 16-3584
+chrM 5467 1 0 0 0 1 0 0 16-3584
+chrM 5468 1 0 0 0 1 0 0 16-3584
+chrM 5469 1 1 0 0 0 0 0 16-3584
+chrM 5470 1 0 0 1 0 0 0 16-3584
+chrM 5471 1 0 1 0 0 0 0 16-3584
+chrM 5472 1 1 0 0 0 0 0 16-3584
+chrM 5473 1 0 0 1 0 0 0 16-3584
+chrM 5474 1 1 0 0 0 0 0 16-3584
+chrM 5475 1 1 0 0 0 0 0 16-3584
+chrM 5476 1 0 1 0 0 0 0 16-3584
+chrM 5477 1 0 0 0 1 0 0 16-3584
+chrM 5478 1 0 0 0 1 0 0 16-3584
+chrM 5479 1 1 0 0 0 0 0 16-3584
+chrM 5480 1 1 0 0 0 0 0 16-3584
+chrM 5481 1 1 0 0 0 0 0 16-3584
+chrM 5482 1 0 1 0 0 0 0 16-3584
+chrM 5483 1 0 1 0 0 0 0 16-3584
+chrM 5484 1 0 1 0 0 0 0 16-3584
+chrM 5485 1 0 1 0 0 0 0 16-3584
+chrM 5486 1 0 1 0 0 0 0 16-3584
+chrM 5487 1 0 0 0 1 0 0 16-3584
+chrM 5488 1 0 0 0 1 0 0 16-3584
+chrM 5489 1 1 0 0 0 0 0 16-3584
+chrM 5490 1 0 0 1 0 0 0 16-3584
+chrM 5491 1 0 1 0 0 0 0 16-3584
+chrM 5492 1 0 0 0 1 0 0 16-3584
+chrM 5493 1 0 0 1 0 0 0 16-3584
+chrM 5494 1 0 0 0 1 0 0 16-3584
+chrM 5495 1 0 1 0 0 0 0 16-3584
+chrM 5496 1 0 0 0 1 0 0 16-3584
+chrM 5497 1 1 0 0 0 0 0 16-3584
+chrM 5498 1 1 0 0 0 0 0 16-3584
+chrM 5499 1 1 0 0 0 0 0 16-3584
+chrM 5500 1 0 1 0 0 0 0 16-3584
+chrM 5501 1 0 0 1 0 0 0 16-3584
+chrM 5502 1 0 0 0 1 0 0 16-3584
+chrM 5503 1 0 0 1 0 0 0 16-3584
+chrM 5504 1 0 1 0 0 0 0 16-3584
+chrM 5505 1 0 0 0 1 0 0 16-3584
+chrM 5506 1 1 0 0 0 0 0 16-3584
+chrM 5507 1 0 1 0 0 0 0 16-3584
+chrM 5508 1 0 0 0 1 0 0 16-3584
+chrM 5509 1 1 0 0 0 0 0 16-3584
+chrM 5510 1 0 0 1 0 0 0 16-3584
+chrM 5511 1 1 0 0 0 0 0 16-3584
+chrM 5512 1 0 1 0 0 0 0 16-3584
+chrM 5513 1 0 0 0 1 0 0 16-3584
+chrM 5514 1 0 1 0 0 0 0 16-3584
+chrM 5515 1 0 0 1 0 0 0 16-3584
+chrM 5516 1 0 0 1 0 0 0 16-3584
+chrM 5517 1 0 0 0 1 0 0 16-3584
+chrM 5518 1 0 1 0 0 0 0 16-3584
+chrM 5519 1 0 0 0 1 0 0 16-3584
+chrM 5520 1 0 0 1 0 0 0 16-3584
+chrM 5521 1 0 1 0 0 0 0 16-3584
+chrM 5522 1 0 0 1 0 0 0 16-3584
+chrM 5523 1 0 0 0 1 0 0 16-3584
+chrM 5524 1 0 0 0 1 0 0 16-3584
+chrM 5525 1 0 0 0 1 0 0 16-3584
+chrM 5526 1 0 0 0 1 0 0 16-3584
+chrM 5527 1 0 1 0 0 0 0 16-3584
+chrM 5528 1 1 0 0 0 0 0 16-3584
+chrM 5529 1 1 0 0 0 0 0 16-3584
+chrM 5530 1 0 0 0 1 0 0 16-3584
+chrM 5531 1 1 0 0 0 0 0 16-3584
+chrM 5532 1 0 0 0 1 0 0 16-3584
+chrM 5533 1 0 0 0 1 0 0 16-3584
+chrM 5534 1 0 0 0 1 0 0 16-3584
+chrM 5535 1 0 1 0 0 0 0 16-3584
+chrM 5536 1 0 0 0 1 0 0 16-3584
+chrM 5537 1 0 0 0 1 0 0 16-3584
+chrM 5538 1 0 0 0 1 0 0 16-3584
+chrM 5539 1 0 0 0 1 0 0 16-3584
+chrM 5540 1 0 1 0 0 0 0 16-3584
+chrM 5541 1 0 1 0 0 0 0 16-3584
+chrM 5542 1 0 1 0 0 0 0 16-3584
+chrM 5543 1 0 0 0 1 0 0 16-3584
+chrM 5544 1 0 0 1 0 0 0 16-3584
+chrM 5545 1 1 0 0 0 0 0 16-3584
+chrM 5546 1 1 0 0 0 0 0 16-3584
+chrM 5547 1 0 1 0 0 0 0 16-3584
+chrM 5548 1 0 0 1 0 0 0 16-3584
+chrM 5549 1 0 0 1 0 0 0 16-3584
+chrM 5550 1 0 0 1 0 0 0 16-3584
+chrM 5551 1 0 0 0 1 0 0 16-3584
+chrM 5552 1 0 1 0 0 0 0 16-3584
+chrM 5553 1 0 0 0 1 0 0 16-3584
+chrM 5554 1 0 1 0 0 0 0 16-3584
+chrM 5555 1 0 0 1 0 0 0 16-3584
+chrM 5556 1 1 0 0 0 0 0 16-3584
+chrM 5557 1 0 0 0 1 0 0 16-3584
+chrM 5558 1 0 0 1 0 0 0 16-3584
+chrM 5559 0 0 0 0 0 0 0 16-3584
+chrM 5560 0 0 0 0 0 0 0 16-3584
+chrM 5561 0 0 0 0 0 0 0 16-3584
+chrM 5562 0 0 0 0 0 0 0 16-3584
+chrM 5563 0 0 0 0 0 0 0 16-3584
+chrM 5564 0 0 0 0 0 0 0 16-3584
+chrM 5565 0 0 0 0 0 0 0 16-3584
+chrM 5566 0 0 0 0 0 0 0 16-3584
+chrM 5567 0 0 0 0 0 0 0 16-3584
+chrM 5568 0 0 0 0 0 0 0 16-3584
+chrM 5569 0 0 0 0 0 0 0 16-3584
+chrM 5570 0 0 0 0 0 0 0 16-3584
+chrM 5571 0 0 0 0 0 0 0 16-3584
+chrM 5572 0 0 0 0 0 0 0 16-3584
+chrM 5573 0 0 0 0 0 0 0 16-3584
+chrM 5574 0 0 0 0 0 0 0 16-3584
+chrM 5575 0 0 0 0 0 0 0 16-3584
+chrM 5576 0 0 0 0 0 0 0 16-3584
+chrM 5577 0 0 0 0 0 0 0 16-3584
+chrM 5578 0 0 0 0 0 0 0 16-3584
+chrM 5579 0 0 0 0 0 0 0 16-3584
+chrM 5580 0 0 0 0 0 0 0 16-3584
+chrM 5581 0 0 0 0 0 0 0 16-3584
+chrM 5582 0 0 0 0 0 0 0 16-3584
+chrM 5583 0 0 0 0 0 0 0 16-3584
+chrM 5584 0 0 0 0 0 0 0 16-3584
+chrM 5585 0 0 0 0 0 0 0 16-3584
+chrM 5586 0 0 0 0 0 0 0 16-3584
+chrM 5587 0 0 0 0 0 0 0 16-3584
+chrM 5588 0 0 0 0 0 0 0 16-3584
+chrM 5589 0 0 0 0 0 0 0 16-3584
+chrM 5590 0 0 0 0 0 0 0 16-3584
+chrM 5591 0 0 0 0 0 0 0 16-3584
+chrM 5592 0 0 0 0 0 0 0 16-3584
+chrM 5593 0 0 0 0 0 0 0 16-3584
+chrM 5594 0 0 0 0 0 0 0 16-3584
+chrM 5595 0 0 0 0 0 0 0 16-3584
+chrM 5596 0 0 0 0 0 0 0 16-3584
+chrM 5597 0 0 0 0 0 0 0 16-3584
+chrM 5598 0 0 0 0 0 0 0 16-3584
+chrM 5599 0 0 0 0 0 0 0 16-3584
+chrM 5600 0 0 0 0 0 0 0 16-3584
+chrM 5601 0 0 0 0 0 0 0 16-3584
+chrM 5602 0 0 0 0 0 0 0 16-3584
+chrM 5603 0 0 0 0 0 0 0 16-3584
+chrM 5604 0 0 0 0 0 0 0 16-3584
+chrM 5605 0 0 0 0 0 0 0 16-3584
+chrM 5606 0 0 0 0 0 0 0 16-3584
+chrM 5607 0 0 0 0 0 0 0 16-3584
+chrM 5608 0 0 0 0 0 0 0 16-3584
+chrM 5609 0 0 0 0 0 0 0 16-3584
+chrM 5610 0 0 0 0 0 0 0 16-3584
+chrM 5611 0 0 0 0 0 0 0 16-3584
+chrM 5612 0 0 0 0 0 0 0 16-3584
+chrM 5613 0 0 0 0 0 0 0 16-3584
+chrM 5614 0 0 0 0 0 0 0 16-3584
+chrM 5615 0 0 0 0 0 0 0 16-3584
+chrM 5616 0 0 0 0 0 0 0 16-3584
+chrM 5617 0 0 0 0 0 0 0 16-3584
+chrM 5618 0 0 0 0 0 0 0 16-3584
+chrM 5619 0 0 0 0 0 0 0 16-3584
+chrM 5620 0 0 0 0 0 0 0 16-3584
+chrM 5621 0 0 0 0 0 0 0 16-3584
+chrM 5622 0 0 0 0 0 0 0 16-3584
+chrM 5623 0 0 0 0 0 0 0 16-3584
+chrM 5624 0 0 0 0 0 0 0 16-3584
+chrM 5625 0 0 0 0 0 0 0 16-3584
+chrM 5626 0 0 0 0 0 0 0 16-3584
+chrM 5627 0 0 0 0 0 0 0 16-3584
+chrM 5628 0 0 0 0 0 0 0 16-3584
+chrM 5629 0 0 0 0 0 0 0 16-3584
+chrM 5630 0 0 0 0 0 0 0 16-3584
+chrM 5631 0 0 0 0 0 0 0 16-3584
+chrM 5632 0 0 0 0 0 0 0 16-3584
+chrM 5633 0 0 0 0 0 0 0 16-3584
+chrM 5634 0 0 0 0 0 0 0 16-3584
+chrM 5635 0 0 0 0 0 0 0 16-3584
+chrM 5636 0 0 0 0 0 0 0 16-3584
+chrM 5637 0 0 0 0 0 0 0 16-3584
+chrM 5638 0 0 0 0 0 0 0 16-3584
+chrM 5639 0 0 0 0 0 0 0 16-3584
+chrM 5640 0 0 0 0 0 0 0 16-3584
+chrM 5641 0 0 0 0 0 0 0 16-3584
+chrM 5642 0 0 0 0 0 0 0 16-3584
+chrM 5643 0 0 0 0 0 0 0 16-3584
+chrM 5644 0 0 0 0 0 0 0 16-3584
+chrM 5645 0 0 0 0 0 0 0 16-3584
+chrM 5646 0 0 0 0 0 0 0 16-3584
+chrM 5647 0 0 0 0 0 0 0 16-3584
+chrM 5648 0 0 0 0 0 0 0 16-3584
+chrM 5649 0 0 0 0 0 0 0 16-3584
+chrM 5650 0 0 0 0 0 0 0 16-3584
+chrM 5651 0 0 0 0 0 0 0 16-3584
+chrM 5652 0 0 0 0 0 0 0 16-3584
+chrM 5653 0 0 0 0 0 0 0 16-3584
+chrM 5654 0 0 0 0 0 0 0 16-3584
+chrM 5655 0 0 0 0 0 0 0 16-3584
+chrM 5656 0 0 0 0 0 0 0 16-3584
+chrM 5657 0 0 0 0 0 0 0 16-3584
+chrM 5658 0 0 0 0 0 0 0 16-3584
+chrM 5659 0 0 0 0 0 0 0 16-3584
+chrM 5660 0 0 0 0 0 0 0 16-3584
+chrM 5661 0 0 0 0 0 0 0 16-3584
+chrM 5662 0 0 0 0 0 0 0 16-3584
+chrM 5663 0 0 0 0 0 0 0 16-3584
+chrM 5664 0 0 0 0 0 0 0 16-3584
+chrM 5665 0 0 0 0 0 0 0 16-3584
+chrM 5666 0 0 0 0 0 0 0 16-3584
+chrM 5667 0 0 0 0 0 0 0 16-3584
+chrM 5668 0 0 0 0 0 0 0 16-3584
+chrM 5669 0 0 0 0 0 0 0 16-3584
+chrM 5670 0 0 0 0 0 0 0 16-3584
+chrM 5671 0 0 0 0 0 0 0 16-3584
+chrM 5672 0 0 0 0 0 0 0 16-3584
+chrM 5673 0 0 0 0 0 0 0 16-3584
+chrM 5674 0 0 0 0 0 0 0 16-3584
+chrM 5675 0 0 0 0 0 0 0 16-3584
+chrM 5676 0 0 0 0 0 0 0 16-3584
+chrM 5677 0 0 0 0 0 0 0 16-3584
+chrM 5678 0 0 0 0 0 0 0 16-3584
+chrM 5679 0 0 0 0 0 0 0 16-3584
+chrM 5680 0 0 0 0 0 0 0 16-3584
+chrM 5681 0 0 0 0 0 0 0 16-3584
+chrM 5682 0 0 0 0 0 0 0 16-3584
+chrM 5683 0 0 0 0 0 0 0 16-3584
+chrM 5684 0 0 0 0 0 0 0 16-3584
+chrM 5685 0 0 0 0 0 0 0 16-3584
+chrM 5686 0 0 0 0 0 0 0 16-3584
+chrM 5687 0 0 0 0 0 0 0 16-3584
+chrM 5688 0 0 0 0 0 0 0 16-3584
+chrM 5689 0 0 0 0 0 0 0 16-3584
+chrM 5690 0 0 0 0 0 0 0 16-3584
+chrM 5691 0 0 0 0 0 0 0 16-3584
+chrM 5692 0 0 0 0 0 0 0 16-3584
+chrM 5693 0 0 0 0 0 0 0 16-3584
+chrM 5694 0 0 0 0 0 0 0 16-3584
+chrM 5695 0 0 0 0 0 0 0 16-3584
+chrM 5696 0 0 0 0 0 0 0 16-3584
+chrM 5697 0 0 0 0 0 0 0 16-3584
+chrM 5698 0 0 0 0 0 0 0 16-3584
+chrM 5699 0 0 0 0 0 0 0 16-3584
+chrM 5700 0 0 0 0 0 0 0 16-3584
+chrM 5701 0 0 0 0 0 0 0 16-3584
+chrM 5702 0 0 0 0 0 0 0 16-3584
+chrM 5703 0 0 0 0 0 0 0 16-3584
+chrM 5704 0 0 0 0 0 0 0 16-3584
+chrM 5705 0 0 0 0 0 0 0 16-3584
+chrM 5706 0 0 0 0 0 0 0 16-3584
+chrM 5707 0 0 0 0 0 0 0 16-3584
+chrM 5708 0 0 0 0 0 0 0 16-3584
+chrM 5709 0 0 0 0 0 0 0 16-3584
+chrM 5710 0 0 0 0 0 0 0 16-3584
+chrM 5711 0 0 0 0 0 0 0 16-3584
+chrM 5712 0 0 0 0 0 0 0 16-3584
+chrM 5713 0 0 0 0 0 0 0 16-3584
+chrM 5714 0 0 0 0 0 0 0 16-3584
+chrM 5715 0 0 0 0 0 0 0 16-3584
+chrM 5716 0 0 0 0 0 0 0 16-3584
+chrM 5717 0 0 0 0 0 0 0 16-3584
+chrM 5718 0 0 0 0 0 0 0 16-3584
+chrM 5719 0 0 0 0 0 0 0 16-3584
+chrM 5720 0 0 0 0 0 0 0 16-3584
+chrM 5721 0 0 0 0 0 0 0 16-3584
+chrM 5722 0 0 0 0 0 0 0 16-3584
+chrM 5723 0 0 0 0 0 0 0 16-3584
+chrM 5724 0 0 0 0 0 0 0 16-3584
+chrM 5725 0 0 0 0 0 0 0 16-3584
+chrM 5726 0 0 0 0 0 0 0 16-3584
+chrM 5727 0 0 0 0 0 0 0 16-3584
+chrM 5728 0 0 0 0 0 0 0 16-3584
+chrM 5729 0 0 0 0 0 0 0 16-3584
+chrM 5730 0 0 0 0 0 0 0 16-3584
+chrM 5731 0 0 0 0 0 0 0 16-3584
+chrM 5732 0 0 0 0 0 0 0 16-3584
+chrM 5733 0 0 0 0 0 0 0 16-3584
+chrM 5734 0 0 0 0 0 0 0 16-3584
+chrM 5735 0 0 0 0 0 0 0 16-3584
+chrM 5736 0 0 0 0 0 0 0 16-3584
+chrM 5737 0 0 0 0 0 0 0 16-3584
+chrM 5738 0 0 0 0 0 0 0 16-3584
+chrM 5739 0 0 0 0 0 0 0 16-3584
+chrM 5740 0 0 0 0 0 0 0 16-3584
+chrM 5741 0 0 0 0 0 0 0 16-3584
+chrM 5742 0 0 0 0 0 0 0 16-3584
+chrM 5743 0 0 0 0 0 0 0 16-3584
+chrM 5744 0 0 0 0 0 0 0 16-3584
+chrM 5745 0 0 0 0 0 0 0 16-3584
+chrM 5746 0 0 0 0 0 0 0 16-3584
+chrM 5747 0 0 0 0 0 0 0 16-3584
+chrM 5748 0 0 0 0 0 0 0 16-3584
+chrM 5749 0 0 0 0 0 0 0 16-3584
+chrM 5750 0 0 0 0 0 0 0 16-3584
+chrM 5751 0 0 0 0 0 0 0 16-3584
+chrM 5752 0 0 0 0 0 0 0 16-3584
+chrM 5753 0 0 0 0 0 0 0 16-3584
+chrM 5754 0 0 0 0 0 0 0 16-3584
+chrM 5755 0 0 0 0 0 0 0 16-3584
+chrM 5756 0 0 0 0 0 0 0 16-3584
+chrM 5757 0 0 0 0 0 0 0 16-3584
+chrM 5758 0 0 0 0 0 0 0 16-3584
+chrM 5759 0 0 0 0 0 0 0 16-3584
+chrM 5760 0 0 0 0 0 0 0 16-3584
+chrM 5761 0 0 0 0 0 0 0 16-3584
+chrM 5762 0 0 0 0 0 0 0 16-3584
+chrM 5763 0 0 0 0 0 0 0 16-3584
+chrM 5764 0 0 0 0 0 0 0 16-3584
+chrM 5765 0 0 0 0 0 0 0 16-3584
+chrM 5766 0 0 0 0 0 0 0 16-3584
+chrM 5767 0 0 0 0 0 0 0 16-3584
+chrM 5768 0 0 0 0 0 0 0 16-3584
+chrM 5769 0 0 0 0 0 0 0 16-3584
+chrM 5770 0 0 0 0 0 0 0 16-3584
+chrM 5771 0 0 0 0 0 0 0 16-3584
+chrM 5772 0 0 0 0 0 0 0 16-3584
+chrM 5773 0 0 0 0 0 0 0 16-3584
+chrM 5774 0 0 0 0 0 0 0 16-3584
+chrM 5775 0 0 0 0 0 0 0 16-3584
+chrM 5776 0 0 0 0 0 0 0 16-3584
+chrM 5777 0 0 0 0 0 0 0 16-3584
+chrM 5778 0 0 0 0 0 0 0 16-3584
+chrM 5779 0 0 0 0 0 0 0 16-3584
+chrM 5780 0 0 0 0 0 0 0 16-3584
+chrM 5781 0 0 0 0 0 0 0 16-3584
+chrM 5782 0 0 0 0 0 0 0 16-3584
+chrM 5783 0 0 0 0 0 0 0 16-3584
+chrM 5784 0 0 0 0 0 0 0 16-3584
+chrM 5785 0 0 0 0 0 0 0 16-3584
+chrM 5786 0 0 0 0 0 0 0 16-3584
+chrM 5787 0 0 0 0 0 0 0 16-3584
+chrM 5788 0 0 0 0 0 0 0 16-3584
+chrM 5789 0 0 0 0 0 0 0 16-3584
+chrM 5790 0 0 0 0 0 0 0 16-3584
+chrM 5791 0 0 0 0 0 0 0 16-3584
+chrM 5792 0 0 0 0 0 0 0 16-3584
+chrM 5793 0 0 0 0 0 0 0 16-3584
+chrM 5794 0 0 0 0 0 0 0 16-3584
+chrM 5795 0 0 0 0 0 0 0 16-3584
+chrM 5796 0 0 0 0 0 0 0 16-3584
+chrM 5797 0 0 0 0 0 0 0 16-3584
+chrM 5798 0 0 0 0 0 0 0 16-3584
+chrM 5799 0 0 0 0 0 0 0 16-3584
+chrM 5800 0 0 0 0 0 0 0 16-3584
+chrM 5801 0 0 0 0 0 0 0 16-3584
+chrM 5802 0 0 0 0 0 0 0 16-3584
+chrM 5803 0 0 0 0 0 0 0 16-3584
+chrM 5804 0 0 0 0 0 0 0 16-3584
+chrM 5805 0 0 0 0 0 0 0 16-3584
+chrM 5806 0 0 0 0 0 0 0 16-3584
+chrM 5807 0 0 0 0 0 0 0 16-3584
+chrM 5808 0 0 0 0 0 0 0 16-3584
+chrM 5809 0 0 0 0 0 0 0 16-3584
+chrM 5810 0 0 0 0 0 0 0 16-3584
+chrM 5811 0 0 0 0 0 0 0 16-3584
+chrM 5812 0 0 0 0 0 0 0 16-3584
+chrM 5813 0 0 0 0 0 0 0 16-3584
+chrM 5814 0 0 0 0 0 0 0 16-3584
+chrM 5815 0 0 0 0 0 0 0 16-3584
+chrM 5816 0 0 0 0 0 0 0 16-3584
+chrM 5817 0 0 0 0 0 0 0 16-3584
+chrM 5818 0 0 0 0 0 0 0 16-3584
+chrM 5819 0 0 0 0 0 0 0 16-3584
+chrM 5820 0 0 0 0 0 0 0 16-3584
+chrM 5821 0 0 0 0 0 0 0 16-3584
+chrM 5822 0 0 0 0 0 0 0 16-3584
+chrM 5823 0 0 0 0 0 0 0 16-3584
+chrM 5824 0 0 0 0 0 0 0 16-3584
+chrM 5825 0 0 0 0 0 0 0 16-3584
+chrM 5826 0 0 0 0 0 0 0 16-3584
+chrM 5827 0 0 0 0 0 0 0 16-3584
+chrM 5828 0 0 0 0 0 0 0 16-3584
+chrM 5829 0 0 0 0 0 0 0 16-3584
+chrM 5830 0 0 0 0 0 0 0 16-3584
+chrM 5831 0 0 0 0 0 0 0 16-3584
+chrM 5832 0 0 0 0 0 0 0 16-3584
+chrM 5833 0 0 0 0 0 0 0 16-3584
+chrM 5834 0 0 0 0 0 0 0 16-3584
+chrM 5835 0 0 0 0 0 0 0 16-3584
+chrM 5836 0 0 0 0 0 0 0 16-3584
+chrM 5837 0 0 0 0 0 0 0 16-3584
+chrM 5838 0 0 0 0 0 0 0 16-3584
+chrM 5839 0 0 0 0 0 0 0 16-3584
+chrM 5840 0 0 0 0 0 0 0 16-3584
+chrM 5841 0 0 0 0 0 0 0 16-3584
+chrM 5842 0 0 0 0 0 0 0 16-3584
+chrM 5843 0 0 0 0 0 0 0 16-3584
+chrM 5844 0 0 0 0 0 0 0 16-3584
+chrM 5845 0 0 0 0 0 0 0 16-3584
+chrM 5846 0 0 0 0 0 0 0 16-3584
+chrM 5847 0 0 0 0 0 0 0 16-3584
+chrM 5848 0 0 0 0 0 0 0 16-3584
+chrM 5849 0 0 0 0 0 0 0 16-3584
+chrM 5850 0 0 0 0 0 0 0 16-3584
+chrM 5851 0 0 0 0 0 0 0 16-3584
+chrM 5852 0 0 0 0 0 0 0 16-3584
+chrM 5853 0 0 0 0 0 0 0 16-3584
+chrM 5854 0 0 0 0 0 0 0 16-3584
+chrM 5855 0 0 0 0 0 0 0 16-3584
+chrM 5856 0 0 0 0 0 0 0 16-3584
+chrM 5857 0 0 0 0 0 0 0 16-3584
+chrM 5858 0 0 0 0 0 0 0 16-3584
+chrM 5859 0 0 0 0 0 0 0 16-3584
+chrM 5860 0 0 0 0 0 0 0 16-3584
+chrM 5861 0 0 0 0 0 0 0 16-3584
+chrM 5862 0 0 0 0 0 0 0 16-3584
+chrM 5863 0 0 0 0 0 0 0 16-3584
+chrM 5864 0 0 0 0 0 0 0 16-3584
+chrM 5865 0 0 0 0 0 0 0 16-3584
+chrM 5866 0 0 0 0 0 0 0 16-3584
+chrM 5867 0 0 0 0 0 0 0 16-3584
+chrM 5868 0 0 0 0 0 0 0 16-3584
+chrM 5869 0 0 0 0 0 0 0 16-3584
+chrM 5870 0 0 0 0 0 0 0 16-3584
+chrM 5871 0 0 0 0 0 0 0 16-3584
+chrM 5872 0 0 0 0 0 0 0 16-3584
+chrM 5873 0 0 0 0 0 0 0 16-3584
+chrM 5874 0 0 0 0 0 0 0 16-3584
+chrM 5875 0 0 0 0 0 0 0 16-3584
+chrM 5876 0 0 0 0 0 0 0 16-3584
+chrM 5877 0 0 0 0 0 0 0 16-3584
+chrM 5878 0 0 0 0 0 0 0 16-3584
+chrM 5879 0 0 0 0 0 0 0 16-3584
+chrM 5880 0 0 0 0 0 0 0 16-3584
+chrM 5881 0 0 0 0 0 0 0 16-3584
+chrM 5882 0 0 0 0 0 0 0 16-3584
+chrM 5883 0 0 0 0 0 0 0 16-3584
+chrM 5884 0 0 0 0 0 0 0 16-3584
+chrM 5885 0 0 0 0 0 0 0 16-3584
+chrM 5886 0 0 0 0 0 0 0 16-3584
+chrM 5887 0 0 0 0 0 0 0 16-3584
+chrM 5888 0 0 0 0 0 0 0 16-3584
+chrM 5889 0 0 0 0 0 0 0 16-3584
+chrM 5890 0 0 0 0 0 0 0 16-3584
+chrM 5891 0 0 0 0 0 0 0 16-3584
+chrM 5892 0 0 0 0 0 0 0 16-3584
+chrM 5893 0 0 0 0 0 0 0 16-3584
+chrM 5894 0 0 0 0 0 0 0 16-3584
+chrM 5895 0 0 0 0 0 0 0 16-3584
+chrM 5896 0 0 0 0 0 0 0 16-3584
+chrM 5897 0 0 0 0 0 0 0 16-3584
+chrM 5898 0 0 0 0 0 0 0 16-3584
+chrM 5899 0 0 0 0 0 0 0 16-3584
+chrM 5900 0 0 0 0 0 0 0 16-3584
+chrM 5901 0 0 0 0 0 0 0 16-3584
+chrM 5902 0 0 0 0 0 0 0 16-3584
+chrM 5903 0 0 0 0 0 0 0 16-3584
+chrM 5904 0 0 0 0 0 0 0 16-3584
+chrM 5905 0 0 0 0 0 0 0 16-3584
+chrM 5906 0 0 0 0 0 0 0 16-3584
+chrM 5907 0 0 0 0 0 0 0 16-3584
+chrM 5908 0 0 0 0 0 0 0 16-3584
+chrM 5909 0 0 0 0 0 0 0 16-3584
+chrM 5910 0 0 0 0 0 0 0 16-3584
+chrM 5911 0 0 0 0 0 0 0 16-3584
+chrM 5912 0 0 0 0 0 0 0 16-3584
+chrM 5913 0 0 0 0 0 0 0 16-3584
+chrM 5914 0 0 0 0 0 0 0 16-3584
+chrM 5915 0 0 0 0 0 0 0 16-3584
+chrM 5916 0 0 0 0 0 0 0 16-3584
+chrM 5917 0 0 0 0 0 0 0 16-3584
+chrM 5918 0 0 0 0 0 0 0 16-3584
+chrM 5919 0 0 0 0 0 0 0 16-3584
+chrM 5920 0 0 0 0 0 0 0 16-3584
+chrM 5921 0 0 0 0 0 0 0 16-3584
+chrM 5922 0 0 0 0 0 0 0 16-3584
+chrM 5923 0 0 0 0 0 0 0 16-3584
+chrM 5924 0 0 0 0 0 0 0 16-3584
+chrM 5925 0 0 0 0 0 0 0 16-3584
+chrM 5926 0 0 0 0 0 0 0 16-3584
+chrM 5927 0 0 0 0 0 0 0 16-3584
+chrM 5928 0 0 0 0 0 0 0 16-3584
+chrM 5929 0 0 0 0 0 0 0 16-3584
+chrM 5930 0 0 0 0 0 0 0 16-3584
+chrM 5931 0 0 0 0 0 0 0 16-3584
+chrM 5932 0 0 0 0 0 0 0 16-3584
+chrM 5933 0 0 0 0 0 0 0 16-3584
+chrM 5934 0 0 0 0 0 0 0 16-3584
+chrM 5935 0 0 0 0 0 0 0 16-3584
+chrM 5936 0 0 0 0 0 0 0 16-3584
+chrM 5937 0 0 0 0 0 0 0 16-3584
+chrM 5938 0 0 0 0 0 0 0 16-3584
+chrM 5939 0 0 0 0 0 0 0 16-3584
+chrM 5940 0 0 0 0 0 0 0 16-3584
+chrM 5941 0 0 0 0 0 0 0 16-3584
+chrM 5942 0 0 0 0 0 0 0 16-3584
+chrM 5943 0 0 0 0 0 0 0 16-3584
+chrM 5944 0 0 0 0 0 0 0 16-3584
+chrM 5945 0 0 0 0 0 0 0 16-3584
+chrM 5946 0 0 0 0 0 0 0 16-3584
+chrM 5947 0 0 0 0 0 0 0 16-3584
+chrM 5948 0 0 0 0 0 0 0 16-3584
+chrM 5949 0 0 0 0 0 0 0 16-3584
+chrM 5950 0 0 0 0 0 0 0 16-3584
+chrM 5951 0 0 0 0 0 0 0 16-3584
+chrM 5952 0 0 0 0 0 0 0 16-3584
+chrM 5953 0 0 0 0 0 0 0 16-3584
+chrM 5954 0 0 0 0 0 0 0 16-3584
+chrM 5955 0 0 0 0 0 0 0 16-3584
+chrM 5956 0 0 0 0 0 0 0 16-3584
+chrM 5957 0 0 0 0 0 0 0 16-3584
+chrM 5958 0 0 0 0 0 0 0 16-3584
+chrM 5959 0 0 0 0 0 0 0 16-3584
+chrM 5960 0 0 0 0 0 0 0 16-3584
+chrM 5961 0 0 0 0 0 0 0 16-3584
+chrM 5962 0 0 0 0 0 0 0 16-3584
+chrM 5963 0 0 0 0 0 0 0 16-3584
+chrM 5964 0 0 0 0 0 0 0 16-3584
+chrM 5965 0 0 0 0 0 0 0 16-3584
+chrM 5966 0 0 0 0 0 0 0 16-3584
+chrM 5967 0 0 0 0 0 0 0 16-3584
+chrM 5968 0 0 0 0 0 0 0 16-3584
+chrM 5969 0 0 0 0 0 0 0 16-3584
+chrM 5970 0 0 0 0 0 0 0 16-3584
+chrM 5971 0 0 0 0 0 0 0 16-3584
+chrM 5972 0 0 0 0 0 0 0 16-3584
+chrM 5973 0 0 0 0 0 0 0 16-3584
+chrM 5974 0 0 0 0 0 0 0 16-3584
+chrM 5975 0 0 0 0 0 0 0 16-3584
+chrM 5976 0 0 0 0 0 0 0 16-3584
+chrM 5977 0 0 0 0 0 0 0 16-3584
+chrM 5978 0 0 0 0 0 0 0 16-3584
+chrM 5979 0 0 0 0 0 0 0 16-3584
+chrM 5980 0 0 0 0 0 0 0 16-3584
+chrM 5981 0 0 0 0 0 0 0 16-3584
+chrM 5982 0 0 0 0 0 0 0 16-3584
+chrM 5983 0 0 0 0 0 0 0 16-3584
+chrM 5984 0 0 0 0 0 0 0 16-3584
+chrM 5985 0 0 0 0 0 0 0 16-3584
+chrM 5986 0 0 0 0 0 0 0 16-3584
+chrM 5987 0 0 0 0 0 0 0 16-3584
+chrM 5988 0 0 0 0 0 0 0 16-3584
+chrM 5989 0 0 0 0 0 0 0 16-3584
+chrM 5990 0 0 0 0 0 0 0 16-3584
+chrM 5991 0 0 0 0 0 0 0 16-3584
+chrM 5992 0 0 0 0 0 0 0 16-3584
+chrM 5993 0 0 0 0 0 0 0 16-3584
+chrM 5994 0 0 0 0 0 0 0 16-3584
+chrM 5995 0 0 0 0 0 0 0 16-3584
+chrM 5996 0 0 0 0 0 0 0 16-3584
+chrM 5997 0 0 0 0 0 0 0 16-3584
+chrM 5998 0 0 0 0 0 0 0 16-3584
+chrM 5999 0 0 0 0 0 0 0 16-3584
+chrM 6000 0 0 0 0 0 0 0 16-3584
+chrM 6001 0 0 0 0 0 0 0 16-3584
+chrM 6002 0 0 0 0 0 0 0 16-3584
+chrM 6003 0 0 0 0 0 0 0 16-3584
+chrM 6004 0 0 0 0 0 0 0 16-3584
+chrM 6005 0 0 0 0 0 0 0 16-3584
+chrM 6006 0 0 0 0 0 0 0 16-3584
+chrM 6007 0 0 0 0 0 0 0 16-3584
+chrM 6008 0 0 0 0 0 0 0 16-3584
+chrM 6009 0 0 0 0 0 0 0 16-3584
+chrM 6010 0 0 0 0 0 0 0 16-3584
+chrM 6011 0 0 0 0 0 0 0 16-3584
+chrM 6012 0 0 0 0 0 0 0 16-3584
+chrM 6013 0 0 0 0 0 0 0 16-3584
+chrM 6014 0 0 0 0 0 0 0 16-3584
+chrM 6015 0 0 0 0 0 0 0 16-3584
+chrM 6016 0 0 0 0 0 0 0 16-3584
+chrM 6017 0 0 0 0 0 0 0 16-3584
+chrM 6018 0 0 0 0 0 0 0 16-3584
+chrM 6019 0 0 0 0 0 0 0 16-3584
+chrM 6020 0 0 0 0 0 0 0 16-3584
+chrM 6021 0 0 0 0 0 0 0 16-3584
+chrM 6022 0 0 0 0 0 0 0 16-3584
+chrM 6023 0 0 0 0 0 0 0 16-3584
+chrM 6024 0 0 0 0 0 0 0 16-3584
+chrM 6025 0 0 0 0 0 0 0 16-3584
+chrM 6026 0 0 0 0 0 0 0 16-3584
+chrM 6027 0 0 0 0 0 0 0 16-3584
+chrM 6028 0 0 0 0 0 0 0 16-3584
+chrM 6029 0 0 0 0 0 0 0 16-3584
+chrM 6030 0 0 0 0 0 0 0 16-3584
+chrM 6031 0 0 0 0 0 0 0 16-3584
+chrM 6032 0 0 0 0 0 0 0 16-3584
+chrM 6033 0 0 0 0 0 0 0 16-3584
+chrM 6034 0 0 0 0 0 0 0 16-3584
+chrM 6035 0 0 0 0 0 0 0 16-3584
+chrM 6036 0 0 0 0 0 0 0 16-3584
+chrM 6037 0 0 0 0 0 0 0 16-3584
+chrM 6038 0 0 0 0 0 0 0 16-3584
+chrM 6039 0 0 0 0 0 0 0 16-3584
+chrM 6040 0 0 0 0 0 0 0 16-3584
+chrM 6041 0 0 0 0 0 0 0 16-3584
+chrM 6042 0 0 0 0 0 0 0 16-3584
+chrM 6043 0 0 0 0 0 0 0 16-3584
+chrM 6044 0 0 0 0 0 0 0 16-3584
+chrM 6045 0 0 0 0 0 0 0 16-3584
+chrM 6046 0 0 0 0 0 0 0 16-3584
+chrM 6047 0 0 0 0 0 0 0 16-3584
+chrM 6048 0 0 0 0 0 0 0 16-3584
+chrM 6049 0 0 0 0 0 0 0 16-3584
+chrM 6050 0 0 0 0 0 0 0 16-3584
+chrM 6051 0 0 0 0 0 0 0 16-3584
+chrM 6052 0 0 0 0 0 0 0 16-3584
+chrM 6053 0 0 0 0 0 0 0 16-3584
+chrM 6054 0 0 0 0 0 0 0 16-3584
+chrM 6055 0 0 0 0 0 0 0 16-3584
+chrM 6056 0 0 0 0 0 0 0 16-3584
+chrM 6057 0 0 0 0 0 0 0 16-3584
+chrM 6058 0 0 0 0 0 0 0 16-3584
+chrM 6059 0 0 0 0 0 0 0 16-3584
+chrM 6060 0 0 0 0 0 0 0 16-3584
+chrM 6061 0 0 0 0 0 0 0 16-3584
+chrM 6062 0 0 0 0 0 0 0 16-3584
+chrM 6063 0 0 0 0 0 0 0 16-3584
+chrM 6064 0 0 0 0 0 0 0 16-3584
+chrM 6065 0 0 0 0 0 0 0 16-3584
+chrM 6066 0 0 0 0 0 0 0 16-3584
+chrM 6067 0 0 0 0 0 0 0 16-3584
+chrM 6068 0 0 0 0 0 0 0 16-3584
+chrM 6069 0 0 0 0 0 0 0 16-3584
+chrM 6070 0 0 0 0 0 0 0 16-3584
+chrM 6071 0 0 0 0 0 0 0 16-3584
+chrM 6072 0 0 0 0 0 0 0 16-3584
+chrM 6073 0 0 0 0 0 0 0 16-3584
+chrM 6074 0 0 0 0 0 0 0 16-3584
+chrM 6075 0 0 0 0 0 0 0 16-3584
+chrM 6076 0 0 0 0 0 0 0 16-3584
+chrM 6077 0 0 0 0 0 0 0 16-3584
+chrM 6078 0 0 0 0 0 0 0 16-3584
+chrM 6079 0 0 0 0 0 0 0 16-3584
+chrM 6080 0 0 0 0 0 0 0 16-3584
+chrM 6081 0 0 0 0 0 0 0 16-3584
+chrM 6082 0 0 0 0 0 0 0 16-3584
+chrM 6083 0 0 0 0 0 0 0 16-3584
+chrM 6084 0 0 0 0 0 0 0 16-3584
+chrM 6085 0 0 0 0 0 0 0 16-3584
+chrM 6086 0 0 0 0 0 0 0 16-3584
+chrM 6087 0 0 0 0 0 0 0 16-3584
+chrM 6088 0 0 0 0 0 0 0 16-3584
+chrM 6089 0 0 0 0 0 0 0 16-3584
+chrM 6090 0 0 0 0 0 0 0 16-3584
+chrM 6091 0 0 0 0 0 0 0 16-3584
+chrM 6092 0 0 0 0 0 0 0 16-3584
+chrM 6093 0 0 0 0 0 0 0 16-3584
+chrM 6094 0 0 0 0 0 0 0 16-3584
+chrM 6095 0 0 0 0 0 0 0 16-3584
+chrM 6096 0 0 0 0 0 0 0 16-3584
+chrM 6097 0 0 0 0 0 0 0 16-3584
+chrM 6098 0 0 0 0 0 0 0 16-3584
+chrM 6099 0 0 0 0 0 0 0 16-3584
+chrM 6100 0 0 0 0 0 0 0 16-3584
+chrM 6101 0 0 0 0 0 0 0 16-3584
+chrM 6102 0 0 0 0 0 0 0 16-3584
+chrM 6103 0 0 0 0 0 0 0 16-3584
+chrM 6104 0 0 0 0 0 0 0 16-3584
+chrM 6105 0 0 0 0 0 0 0 16-3584
+chrM 6106 0 0 0 0 0 0 0 16-3584
+chrM 6107 0 0 0 0 0 0 0 16-3584
+chrM 6108 0 0 0 0 0 0 0 16-3584
+chrM 6109 0 0 0 0 0 0 0 16-3584
+chrM 6110 0 0 0 0 0 0 0 16-3584
+chrM 6111 0 0 0 0 0 0 0 16-3584
+chrM 6112 0 0 0 0 0 0 0 16-3584
+chrM 6113 0 0 0 0 0 0 0 16-3584
+chrM 6114 0 0 0 0 0 0 0 16-3584
+chrM 6115 0 0 0 0 0 0 0 16-3584
+chrM 6116 0 0 0 0 0 0 0 16-3584
+chrM 6117 0 0 0 0 0 0 0 16-3584
+chrM 6118 0 0 0 0 0 0 0 16-3584
+chrM 6119 0 0 0 0 0 0 0 16-3584
+chrM 6120 0 0 0 0 0 0 0 16-3584
+chrM 6121 0 0 0 0 0 0 0 16-3584
+chrM 6122 0 0 0 0 0 0 0 16-3584
+chrM 6123 0 0 0 0 0 0 0 16-3584
+chrM 6124 0 0 0 0 0 0 0 16-3584
+chrM 6125 0 0 0 0 0 0 0 16-3584
+chrM 6126 0 0 0 0 0 0 0 16-3584
+chrM 6127 0 0 0 0 0 0 0 16-3584
+chrM 6128 0 0 0 0 0 0 0 16-3584
+chrM 6129 0 0 0 0 0 0 0 16-3584
+chrM 6130 0 0 0 0 0 0 0 16-3584
+chrM 6131 0 0 0 0 0 0 0 16-3584
+chrM 6132 0 0 0 0 0 0 0 16-3584
+chrM 6133 0 0 0 0 0 0 0 16-3584
+chrM 6134 0 0 0 0 0 0 0 16-3584
+chrM 6135 0 0 0 0 0 0 0 16-3584
+chrM 6136 0 0 0 0 0 0 0 16-3584
+chrM 6137 0 0 0 0 0 0 0 16-3584
+chrM 6138 0 0 0 0 0 0 0 16-3584
+chrM 6139 0 0 0 0 0 0 0 16-3584
+chrM 6140 0 0 0 0 0 0 0 16-3584
+chrM 6141 0 0 0 0 0 0 0 16-3584
+chrM 6142 0 0 0 0 0 0 0 16-3584
+chrM 6143 0 0 0 0 0 0 0 16-3584
+chrM 6144 0 0 0 0 0 0 0 16-3584
+chrM 6145 0 0 0 0 0 0 0 16-3584
+chrM 6146 0 0 0 0 0 0 0 16-3584
+chrM 6147 0 0 0 0 0 0 0 16-3584
+chrM 6148 0 0 0 0 0 0 0 16-3584
+chrM 6149 0 0 0 0 0 0 0 16-3584
+chrM 6150 0 0 0 0 0 0 0 16-3584
+chrM 6151 0 0 0 0 0 0 0 16-3584
+chrM 6152 0 0 0 0 0 0 0 16-3584
+chrM 6153 0 0 0 0 0 0 0 16-3584
+chrM 6154 0 0 0 0 0 0 0 16-3584
+chrM 6155 0 0 0 0 0 0 0 16-3584
+chrM 6156 0 0 0 0 0 0 0 16-3584
+chrM 6157 0 0 0 0 0 0 0 16-3584
+chrM 6158 0 0 0 0 0 0 0 16-3584
+chrM 6159 0 0 0 0 0 0 0 16-3584
+chrM 6160 0 0 0 0 0 0 0 16-3584
+chrM 6161 0 0 0 0 0 0 0 16-3584
+chrM 6162 0 0 0 0 0 0 0 16-3584
+chrM 6163 0 0 0 0 0 0 0 16-3584
+chrM 6164 0 0 0 0 0 0 0 16-3584
+chrM 6165 0 0 0 0 0 0 0 16-3584
+chrM 6166 0 0 0 0 0 0 0 16-3584
+chrM 6167 0 0 0 0 0 0 0 16-3584
+chrM 6168 0 0 0 0 0 0 0 16-3584
+chrM 6169 0 0 0 0 0 0 0 16-3584
+chrM 6170 0 0 0 0 0 0 0 16-3584
+chrM 6171 0 0 0 0 0 0 0 16-3584
+chrM 6172 0 0 0 0 0 0 0 16-3584
+chrM 6173 0 0 0 0 0 0 0 16-3584
+chrM 6174 0 0 0 0 0 0 0 16-3584
+chrM 6175 0 0 0 0 0 0 0 16-3584
+chrM 6176 0 0 0 0 0 0 0 16-3584
+chrM 6177 0 0 0 0 0 0 0 16-3584
+chrM 6178 0 0 0 0 0 0 0 16-3584
+chrM 6179 0 0 0 0 0 0 0 16-3584
+chrM 6180 0 0 0 0 0 0 0 16-3584
+chrM 6181 0 0 0 0 0 0 0 16-3584
+chrM 6182 0 0 0 0 0 0 0 16-3584
+chrM 6183 0 0 0 0 0 0 0 16-3584
+chrM 6184 0 0 0 0 0 0 0 16-3584
+chrM 6185 0 0 0 0 0 0 0 16-3584
+chrM 6186 0 0 0 0 0 0 0 16-3584
+chrM 6187 0 0 0 0 0 0 0 16-3584
+chrM 6188 0 0 0 0 0 0 0 16-3584
+chrM 6189 0 0 0 0 0 0 0 16-3584
+chrM 6190 0 0 0 0 0 0 0 16-3584
+chrM 6191 0 0 0 0 0 0 0 16-3584
+chrM 6192 0 0 0 0 0 0 0 16-3584
+chrM 6193 0 0 0 0 0 0 0 16-3584
+chrM 6194 0 0 0 0 0 0 0 16-3584
+chrM 6195 0 0 0 0 0 0 0 16-3584
+chrM 6196 0 0 0 0 0 0 0 16-3584
+chrM 6197 0 0 0 0 0 0 0 16-3584
+chrM 6198 0 0 0 0 0 0 0 16-3584
+chrM 6199 0 0 0 0 0 0 0 16-3584
+chrM 6200 0 0 0 0 0 0 0 16-3584
+chrM 6201 0 0 0 0 0 0 0 16-3584
+chrM 6202 0 0 0 0 0 0 0 16-3584
+chrM 6203 0 0 0 0 0 0 0 16-3584
+chrM 6204 0 0 0 0 0 0 0 16-3584
+chrM 6205 0 0 0 0 0 0 0 16-3584
+chrM 6206 0 0 0 0 0 0 0 16-3584
+chrM 6207 0 0 0 0 0 0 0 16-3584
+chrM 6208 0 0 0 0 0 0 0 16-3584
+chrM 6209 0 0 0 0 0 0 0 16-3584
+chrM 6210 0 0 0 0 0 0 0 16-3584
+chrM 6211 0 0 0 0 0 0 0 16-3584
+chrM 6212 0 0 0 0 0 0 0 16-3584
+chrM 6213 0 0 0 0 0 0 0 16-3584
+chrM 6214 0 0 0 0 0 0 0 16-3584
+chrM 6215 0 0 0 0 0 0 0 16-3584
+chrM 6216 0 0 0 0 0 0 0 16-3584
+chrM 6217 0 0 0 0 0 0 0 16-3584
+chrM 6218 0 0 0 0 0 0 0 16-3584
+chrM 6219 0 0 0 0 0 0 0 16-3584
+chrM 6220 0 0 0 0 0 0 0 16-3584
+chrM 6221 0 0 0 0 0 0 0 16-3584
+chrM 6222 0 0 0 0 0 0 0 16-3584
+chrM 6223 0 0 0 0 0 0 0 16-3584
+chrM 6224 0 0 0 0 0 0 0 16-3584
+chrM 6225 0 0 0 0 0 0 0 16-3584
+chrM 6226 0 0 0 0 0 0 0 16-3584
+chrM 6227 0 0 0 0 0 0 0 16-3584
+chrM 6228 0 0 0 0 0 0 0 16-3584
+chrM 6229 0 0 0 0 0 0 0 16-3584
+chrM 6230 0 0 0 0 0 0 0 16-3584
+chrM 6231 0 0 0 0 0 0 0 16-3584
+chrM 6232 0 0 0 0 0 0 0 16-3584
+chrM 6233 0 0 0 0 0 0 0 16-3584
+chrM 6234 0 0 0 0 0 0 0 16-3584
+chrM 6235 0 0 0 0 0 0 0 16-3584
+chrM 6236 0 0 0 0 0 0 0 16-3584
+chrM 6237 0 0 0 0 0 0 0 16-3584
+chrM 6238 0 0 0 0 0 0 0 16-3584
+chrM 6239 0 0 0 0 0 0 0 16-3584
+chrM 6240 0 0 0 0 0 0 0 16-3584
+chrM 6241 0 0 0 0 0 0 0 16-3584
+chrM 6242 0 0 0 0 0 0 0 16-3584
+chrM 6243 0 0 0 0 0 0 0 16-3584
+chrM 6244 0 0 0 0 0 0 0 16-3584
+chrM 6245 0 0 0 0 0 0 0 16-3584
+chrM 6246 0 0 0 0 0 0 0 16-3584
+chrM 6247 0 0 0 0 0 0 0 16-3584
+chrM 6248 0 0 0 0 0 0 0 16-3584
+chrM 6249 0 0 0 0 0 0 0 16-3584
+chrM 6250 0 0 0 0 0 0 0 16-3584
+chrM 6251 0 0 0 0 0 0 0 16-3584
+chrM 6252 0 0 0 0 0 0 0 16-3584
+chrM 6253 0 0 0 0 0 0 0 16-3584
+chrM 6254 0 0 0 0 0 0 0 16-3584
+chrM 6255 0 0 0 0 0 0 0 16-3584
+chrM 6256 0 0 0 0 0 0 0 16-3584
+chrM 6257 0 0 0 0 0 0 0 16-3584
+chrM 6258 0 0 0 0 0 0 0 16-3584
+chrM 6259 0 0 0 0 0 0 0 16-3584
+chrM 6260 0 0 0 0 0 0 0 16-3584
+chrM 6261 0 0 0 0 0 0 0 16-3584
+chrM 6262 0 0 0 0 0 0 0 16-3584
+chrM 6263 0 0 0 0 0 0 0 16-3584
+chrM 6264 0 0 0 0 0 0 0 16-3584
+chrM 6265 0 0 0 0 0 0 0 16-3584
+chrM 6266 0 0 0 0 0 0 0 16-3584
+chrM 6267 0 0 0 0 0 0 0 16-3584
+chrM 6268 0 0 0 0 0 0 0 16-3584
+chrM 6269 0 0 0 0 0 0 0 16-3584
+chrM 6270 0 0 0 0 0 0 0 16-3584
+chrM 6271 0 0 0 0 0 0 0 16-3584
+chrM 6272 0 0 0 0 0 0 0 16-3584
+chrM 6273 0 0 0 0 0 0 0 16-3584
+chrM 6274 0 0 0 0 0 0 0 16-3584
+chrM 6275 0 0 0 0 0 0 0 16-3584
+chrM 6276 0 0 0 0 0 0 0 16-3584
+chrM 6277 0 0 0 0 0 0 0 16-3584
+chrM 6278 0 0 0 0 0 0 0 16-3584
+chrM 6279 0 0 0 0 0 0 0 16-3584
+chrM 6280 0 0 0 0 0 0 0 16-3584
+chrM 6281 0 0 0 0 0 0 0 16-3584
+chrM 6282 0 0 0 0 0 0 0 16-3584
+chrM 6283 0 0 0 0 0 0 0 16-3584
+chrM 6284 0 0 0 0 0 0 0 16-3584
+chrM 6285 0 0 0 0 0 0 0 16-3584
+chrM 6286 0 0 0 0 0 0 0 16-3584
+chrM 6287 0 0 0 0 0 0 0 16-3584
+chrM 6288 0 0 0 0 0 0 0 16-3584
+chrM 6289 0 0 0 0 0 0 0 16-3584
+chrM 6290 0 0 0 0 0 0 0 16-3584
+chrM 6291 0 0 0 0 0 0 0 16-3584
+chrM 6292 0 0 0 0 0 0 0 16-3584
+chrM 6293 0 0 0 0 0 0 0 16-3584
+chrM 6294 0 0 0 0 0 0 0 16-3584
+chrM 6295 0 0 0 0 0 0 0 16-3584
+chrM 6296 0 0 0 0 0 0 0 16-3584
+chrM 6297 0 0 0 0 0 0 0 16-3584
+chrM 6298 0 0 0 0 0 0 0 16-3584
+chrM 6299 0 0 0 0 0 0 0 16-3584
+chrM 6300 0 0 0 0 0 0 0 16-3584
+chrM 6301 0 0 0 0 0 0 0 16-3584
+chrM 6302 0 0 0 0 0 0 0 16-3584
+chrM 6303 0 0 0 0 0 0 0 16-3584
+chrM 6304 0 0 0 0 0 0 0 16-3584
+chrM 6305 0 0 0 0 0 0 0 16-3584
+chrM 6306 0 0 0 0 0 0 0 16-3584
+chrM 6307 0 0 0 0 0 0 0 16-3584
+chrM 6308 0 0 0 0 0 0 0 16-3584
+chrM 6309 0 0 0 0 0 0 0 16-3584
+chrM 6310 0 0 0 0 0 0 0 16-3584
+chrM 6311 0 0 0 0 0 0 0 16-3584
+chrM 6312 0 0 0 0 0 0 0 16-3584
+chrM 6313 0 0 0 0 0 0 0 16-3584
+chrM 6314 0 0 0 0 0 0 0 16-3584
+chrM 6315 0 0 0 0 0 0 0 16-3584
+chrM 6316 0 0 0 0 0 0 0 16-3584
+chrM 6317 0 0 0 0 0 0 0 16-3584
+chrM 6318 0 0 0 0 0 0 0 16-3584
+chrM 6319 0 0 0 0 0 0 0 16-3584
+chrM 6320 0 0 0 0 0 0 0 16-3584
+chrM 6321 0 0 0 0 0 0 0 16-3584
+chrM 6322 0 0 0 0 0 0 0 16-3584
+chrM 6323 0 0 0 0 0 0 0 16-3584
+chrM 6324 0 0 0 0 0 0 0 16-3584
+chrM 6325 0 0 0 0 0 0 0 16-3584
+chrM 6326 0 0 0 0 0 0 0 16-3584
+chrM 6327 0 0 0 0 0 0 0 16-3584
+chrM 6328 0 0 0 0 0 0 0 16-3584
+chrM 6329 0 0 0 0 0 0 0 16-3584
+chrM 6330 0 0 0 0 0 0 0 16-3584
+chrM 6331 0 0 0 0 0 0 0 16-3584
+chrM 6332 0 0 0 0 0 0 0 16-3584
+chrM 6333 0 0 0 0 0 0 0 16-3584
+chrM 6334 0 0 0 0 0 0 0 16-3584
+chrM 6335 0 0 0 0 0 0 0 16-3584
+chrM 6336 0 0 0 0 0 0 0 16-3584
+chrM 6337 0 0 0 0 0 0 0 16-3584
+chrM 6338 0 0 0 0 0 0 0 16-3584
+chrM 6339 0 0 0 0 0 0 0 16-3584
+chrM 6340 0 0 0 0 0 0 0 16-3584
+chrM 6341 0 0 0 0 0 0 0 16-3584
+chrM 6342 0 0 0 0 0 0 0 16-3584
+chrM 6343 0 0 0 0 0 0 0 16-3584
+chrM 6344 0 0 0 0 0 0 0 16-3584
+chrM 6345 0 0 0 0 0 0 0 16-3584
+chrM 6346 0 0 0 0 0 0 0 16-3584
+chrM 6347 0 0 0 0 0 0 0 16-3584
+chrM 6348 0 0 0 0 0 0 0 16-3584
+chrM 6349 0 0 0 0 0 0 0 16-3584
+chrM 6350 0 0 0 0 0 0 0 16-3584
+chrM 6351 0 0 0 0 0 0 0 16-3584
+chrM 6352 0 0 0 0 0 0 0 16-3584
+chrM 6353 0 0 0 0 0 0 0 16-3584
+chrM 6354 0 0 0 0 0 0 0 16-3584
+chrM 6355 0 0 0 0 0 0 0 16-3584
+chrM 6356 0 0 0 0 0 0 0 16-3584
+chrM 6357 0 0 0 0 0 0 0 16-3584
+chrM 6358 0 0 0 0 0 0 0 16-3584
+chrM 6359 0 0 0 0 0 0 0 16-3584
+chrM 6360 0 0 0 0 0 0 0 16-3584
+chrM 6361 0 0 0 0 0 0 0 16-3584
+chrM 6362 0 0 0 0 0 0 0 16-3584
+chrM 6363 0 0 0 0 0 0 0 16-3584
+chrM 6364 0 0 0 0 0 0 0 16-3584
+chrM 6365 0 0 0 0 0 0 0 16-3584
+chrM 6366 0 0 0 0 0 0 0 16-3584
+chrM 6367 0 0 0 0 0 0 0 16-3584
+chrM 6368 0 0 0 0 0 0 0 16-3584
+chrM 6369 0 0 0 0 0 0 0 16-3584
+chrM 6370 0 0 0 0 0 0 0 16-3584
+chrM 6371 0 0 0 0 0 0 0 16-3584
+chrM 6372 0 0 0 0 0 0 0 16-3584
+chrM 6373 0 0 0 0 0 0 0 16-3584
+chrM 6374 0 0 0 0 0 0 0 16-3584
+chrM 6375 0 0 0 0 0 0 0 16-3584
+chrM 6376 0 0 0 0 0 0 0 16-3584
+chrM 6377 0 0 0 0 0 0 0 16-3584
+chrM 6378 0 0 0 0 0 0 0 16-3584
+chrM 6379 0 0 0 0 0 0 0 16-3584
+chrM 6380 0 0 0 0 0 0 0 16-3584
+chrM 6381 0 0 0 0 0 0 0 16-3584
+chrM 6382 0 0 0 0 0 0 0 16-3584
+chrM 6383 0 0 0 0 0 0 0 16-3584
+chrM 6384 0 0 0 0 0 0 0 16-3584
+chrM 6385 0 0 0 0 0 0 0 16-3584
+chrM 6386 0 0 0 0 0 0 0 16-3584
+chrM 6387 0 0 0 0 0 0 0 16-3584
+chrM 6388 0 0 0 0 0 0 0 16-3584
+chrM 6389 0 0 0 0 0 0 0 16-3584
+chrM 6390 0 0 0 0 0 0 0 16-3584
+chrM 6391 0 0 0 0 0 0 0 16-3584
+chrM 6392 0 0 0 0 0 0 0 16-3584
+chrM 6393 0 0 0 0 0 0 0 16-3584
+chrM 6394 0 0 0 0 0 0 0 16-3584
+chrM 6395 0 0 0 0 0 0 0 16-3584
+chrM 6396 0 0 0 0 0 0 0 16-3584
+chrM 6397 0 0 0 0 0 0 0 16-3584
+chrM 6398 0 0 0 0 0 0 0 16-3584
+chrM 6399 0 0 0 0 0 0 0 16-3584
+chrM 6400 0 0 0 0 0 0 0 16-3584
+chrM 6401 0 0 0 0 0 0 0 16-3584
+chrM 6402 0 0 0 0 0 0 0 16-3584
+chrM 6403 0 0 0 0 0 0 0 16-3584
+chrM 6404 0 0 0 0 0 0 0 16-3584
+chrM 6405 0 0 0 0 0 0 0 16-3584
+chrM 6406 0 0 0 0 0 0 0 16-3584
+chrM 6407 0 0 0 0 0 0 0 16-3584
+chrM 6408 0 0 0 0 0 0 0 16-3584
+chrM 6409 0 0 0 0 0 0 0 16-3584
+chrM 6410 0 0 0 0 0 0 0 16-3584
+chrM 6411 0 0 0 0 0 0 0 16-3584
+chrM 6412 0 0 0 0 0 0 0 16-3584
+chrM 6413 0 0 0 0 0 0 0 16-3584
+chrM 6414 0 0 0 0 0 0 0 16-3584
+chrM 6415 0 0 0 0 0 0 0 16-3584
+chrM 6416 0 0 0 0 0 0 0 16-3584
+chrM 6417 0 0 0 0 0 0 0 16-3584
+chrM 6418 0 0 0 0 0 0 0 16-3584
+chrM 6419 0 0 0 0 0 0 0 16-3584
+chrM 6420 0 0 0 0 0 0 0 16-3584
+chrM 6421 0 0 0 0 0 0 0 16-3584
+chrM 6422 0 0 0 0 0 0 0 16-3584
+chrM 6423 0 0 0 0 0 0 0 16-3584
+chrM 6424 0 0 0 0 0 0 0 16-3584
+chrM 6425 0 0 0 0 0 0 0 16-3584
+chrM 6426 0 0 0 0 0 0 0 16-3584
+chrM 6427 0 0 0 0 0 0 0 16-3584
+chrM 6428 0 0 0 0 0 0 0 16-3584
+chrM 6429 0 0 0 0 0 0 0 16-3584
+chrM 6430 0 0 0 0 0 0 0 16-3584
+chrM 6431 0 0 0 0 0 0 0 16-3584
+chrM 6432 0 0 0 0 0 0 0 16-3584
+chrM 6433 0 0 0 0 0 0 0 16-3584
+chrM 6434 0 0 0 0 0 0 0 16-3584
+chrM 6435 0 0 0 0 0 0 0 16-3584
+chrM 6436 0 0 0 0 0 0 0 16-3584
+chrM 6437 0 0 0 0 0 0 0 16-3584
+chrM 6438 0 0 0 0 0 0 0 16-3584
+chrM 6439 0 0 0 0 0 0 0 16-3584
+chrM 6440 0 0 0 0 0 0 0 16-3584
+chrM 6441 0 0 0 0 0 0 0 16-3584
+chrM 6442 0 0 0 0 0 0 0 16-3584
+chrM 6443 0 0 0 0 0 0 0 16-3584
+chrM 6444 0 0 0 0 0 0 0 16-3584
+chrM 6445 0 0 0 0 0 0 0 16-3584
+chrM 6446 0 0 0 0 0 0 0 16-3584
+chrM 6447 0 0 0 0 0 0 0 16-3584
+chrM 6448 0 0 0 0 0 0 0 16-3584
+chrM 6449 0 0 0 0 0 0 0 16-3584
+chrM 6450 0 0 0 0 0 0 0 16-3584
+chrM 6451 0 0 0 0 0 0 0 16-3584
+chrM 6452 0 0 0 0 0 0 0 16-3584
+chrM 6453 0 0 0 0 0 0 0 16-3584
+chrM 6454 0 0 0 0 0 0 0 16-3584
+chrM 6455 0 0 0 0 0 0 0 16-3584
+chrM 6456 0 0 0 0 0 0 0 16-3584
+chrM 6457 0 0 0 0 0 0 0 16-3584
+chrM 6458 0 0 0 0 0 0 0 16-3584
+chrM 6459 0 0 0 0 0 0 0 16-3584
+chrM 6460 0 0 0 0 0 0 0 16-3584
+chrM 6461 0 0 0 0 0 0 0 16-3584
+chrM 6462 0 0 0 0 0 0 0 16-3584
+chrM 6463 0 0 0 0 0 0 0 16-3584
+chrM 6464 0 0 0 0 0 0 0 16-3584
+chrM 6465 0 0 0 0 0 0 0 16-3584
+chrM 6466 0 0 0 0 0 0 0 16-3584
+chrM 6467 0 0 0 0 0 0 0 16-3584
+chrM 6468 0 0 0 0 0 0 0 16-3584
+chrM 6469 0 0 0 0 0 0 0 16-3584
+chrM 6470 0 0 0 0 0 0 0 16-3584
+chrM 6471 0 0 0 0 0 0 0 16-3584
+chrM 6472 0 0 0 0 0 0 0 16-3584
+chrM 6473 0 0 0 0 0 0 0 16-3584
+chrM 6474 0 0 0 0 0 0 0 16-3584
+chrM 6475 0 0 0 0 0 0 0 16-3584
+chrM 6476 0 0 0 0 0 0 0 16-3584
+chrM 6477 0 0 0 0 0 0 0 16-3584
+chrM 6478 0 0 0 0 0 0 0 16-3584
+chrM 6479 0 0 0 0 0 0 0 16-3584
+chrM 6480 0 0 0 0 0 0 0 16-3584
+chrM 6481 0 0 0 0 0 0 0 16-3584
+chrM 6482 0 0 0 0 0 0 0 16-3584
+chrM 6483 0 0 0 0 0 0 0 16-3584
+chrM 6484 0 0 0 0 0 0 0 16-3584
+chrM 6485 0 0 0 0 0 0 0 16-3584
+chrM 6486 0 0 0 0 0 0 0 16-3584
+chrM 6487 0 0 0 0 0 0 0 16-3584
+chrM 6488 0 0 0 0 0 0 0 16-3584
+chrM 6489 0 0 0 0 0 0 0 16-3584
+chrM 6490 0 0 0 0 0 0 0 16-3584
+chrM 6491 0 0 0 0 0 0 0 16-3584
+chrM 6492 0 0 0 0 0 0 0 16-3584
+chrM 6493 0 0 0 0 0 0 0 16-3584
+chrM 6494 0 0 0 0 0 0 0 16-3584
+chrM 6495 0 0 0 0 0 0 0 16-3584
+chrM 6496 0 0 0 0 0 0 0 16-3584
+chrM 6497 0 0 0 0 0 0 0 16-3584
+chrM 6498 0 0 0 0 0 0 0 16-3584
+chrM 6499 0 0 0 0 0 0 0 16-3584
+chrM 6500 0 0 0 0 0 0 0 16-3584
+chrM 6501 0 0 0 0 0 0 0 16-3584
+chrM 6502 0 0 0 0 0 0 0 16-3584
+chrM 6503 0 0 0 0 0 0 0 16-3584
+chrM 6504 0 0 0 0 0 0 0 16-3584
+chrM 6505 0 0 0 0 0 0 0 16-3584
+chrM 6506 0 0 0 0 0 0 0 16-3584
+chrM 6507 0 0 0 0 0 0 0 16-3584
+chrM 6508 0 0 0 0 0 0 0 16-3584
+chrM 6509 0 0 0 0 0 0 0 16-3584
+chrM 6510 0 0 0 0 0 0 0 16-3584
+chrM 6511 0 0 0 0 0 0 0 16-3584
+chrM 6512 0 0 0 0 0 0 0 16-3584
+chrM 6513 0 0 0 0 0 0 0 16-3584
+chrM 6514 0 0 0 0 0 0 0 16-3584
+chrM 6515 0 0 0 0 0 0 0 16-3584
+chrM 6516 0 0 0 0 0 0 0 16-3584
+chrM 6517 0 0 0 0 0 0 0 16-3584
+chrM 6518 0 0 0 0 0 0 0 16-3584
+chrM 6519 0 0 0 0 0 0 0 16-3584
+chrM 6520 0 0 0 0 0 0 0 16-3584
+chrM 6521 0 0 0 0 0 0 0 16-3584
+chrM 6522 0 0 0 0 0 0 0 16-3584
+chrM 6523 0 0 0 0 0 0 0 16-3584
+chrM 6524 0 0 0 0 0 0 0 16-3584
+chrM 6525 0 0 0 0 0 0 0 16-3584
+chrM 6526 0 0 0 0 0 0 0 16-3584
+chrM 6527 0 0 0 0 0 0 0 16-3584
+chrM 6528 0 0 0 0 0 0 0 16-3584
+chrM 6529 0 0 0 0 0 0 0 16-3584
+chrM 6530 0 0 0 0 0 0 0 16-3584
+chrM 6531 0 0 0 0 0 0 0 16-3584
+chrM 6532 0 0 0 0 0 0 0 16-3584
+chrM 6533 0 0 0 0 0 0 0 16-3584
+chrM 6534 0 0 0 0 0 0 0 16-3584
+chrM 6535 0 0 0 0 0 0 0 16-3584
+chrM 6536 0 0 0 0 0 0 0 16-3584
+chrM 6537 0 0 0 0 0 0 0 16-3584
+chrM 6538 0 0 0 0 0 0 0 16-3584
+chrM 6539 0 0 0 0 0 0 0 16-3584
+chrM 6540 0 0 0 0 0 0 0 16-3584
+chrM 6541 0 0 0 0 0 0 0 16-3584
+chrM 6542 0 0 0 0 0 0 0 16-3584
+chrM 6543 0 0 0 0 0 0 0 16-3584
+chrM 6544 0 0 0 0 0 0 0 16-3584
+chrM 6545 0 0 0 0 0 0 0 16-3584
+chrM 6546 0 0 0 0 0 0 0 16-3584
+chrM 6547 0 0 0 0 0 0 0 16-3584
+chrM 6548 0 0 0 0 0 0 0 16-3584
+chrM 6549 0 0 0 0 0 0 0 16-3584
+chrM 6550 0 0 0 0 0 0 0 16-3584
+chrM 6551 0 0 0 0 0 0 0 16-3584
+chrM 6552 0 0 0 0 0 0 0 16-3584
+chrM 6553 0 0 0 0 0 0 0 16-3584
+chrM 6554 0 0 0 0 0 0 0 16-3584
+chrM 6555 0 0 0 0 0 0 0 16-3584
+chrM 6556 0 0 0 0 0 0 0 16-3584
+chrM 6557 0 0 0 0 0 0 0 16-3584
+chrM 6558 0 0 0 0 0 0 0 16-3584
+chrM 6559 0 0 0 0 0 0 0 16-3584
+chrM 6560 0 0 0 0 0 0 0 16-3584
+chrM 6561 0 0 0 0 0 0 0 16-3584
+chrM 6562 0 0 0 0 0 0 0 16-3584
+chrM 6563 0 0 0 0 0 0 0 16-3584
+chrM 6564 0 0 0 0 0 0 0 16-3584
+chrM 6565 0 0 0 0 0 0 0 16-3584
+chrM 6566 0 0 0 0 0 0 0 16-3584
+chrM 6567 0 0 0 0 0 0 0 16-3584
+chrM 6568 0 0 0 0 0 0 0 16-3584
+chrM 6569 0 0 0 0 0 0 0 16-3584
+chrM 6570 0 0 0 0 0 0 0 16-3584
+chrM 6571 0 0 0 0 0 0 0 16-3584
+chrM 6572 0 0 0 0 0 0 0 16-3584
+chrM 6573 0 0 0 0 0 0 0 16-3584
+chrM 6574 0 0 0 0 0 0 0 16-3584
+chrM 6575 0 0 0 0 0 0 0 16-3584
+chrM 6576 0 0 0 0 0 0 0 16-3584
+chrM 6577 0 0 0 0 0 0 0 16-3584
+chrM 6578 0 0 0 0 0 0 0 16-3584
+chrM 6579 0 0 0 0 0 0 0 16-3584
+chrM 6580 0 0 0 0 0 0 0 16-3584
+chrM 6581 0 0 0 0 0 0 0 16-3584
+chrM 6582 0 0 0 0 0 0 0 16-3584
+chrM 6583 0 0 0 0 0 0 0 16-3584
+chrM 6584 0 0 0 0 0 0 0 16-3584
+chrM 6585 0 0 0 0 0 0 0 16-3584
+chrM 6586 0 0 0 0 0 0 0 16-3584
+chrM 6587 0 0 0 0 0 0 0 16-3584
+chrM 6588 0 0 0 0 0 0 0 16-3584
+chrM 6589 0 0 0 0 0 0 0 16-3584
+chrM 6590 0 0 0 0 0 0 0 16-3584
+chrM 6591 0 0 0 0 0 0 0 16-3584
+chrM 6592 0 0 0 0 0 0 0 16-3584
+chrM 6593 0 0 0 0 0 0 0 16-3584
+chrM 6594 0 0 0 0 0 0 0 16-3584
+chrM 6595 0 0 0 0 0 0 0 16-3584
+chrM 6596 0 0 0 0 0 0 0 16-3584
+chrM 6597 0 0 0 0 0 0 0 16-3584
+chrM 6598 0 0 0 0 0 0 0 16-3584
+chrM 6599 0 0 0 0 0 0 0 16-3584
+chrM 6600 0 0 0 0 0 0 0 16-3584
+chrM 6601 0 0 0 0 0 0 0 16-3584
+chrM 6602 0 0 0 0 0 0 0 16-3584
+chrM 6603 0 0 0 0 0 0 0 16-3584
+chrM 6604 0 0 0 0 0 0 0 16-3584
+chrM 6605 0 0 0 0 0 0 0 16-3584
+chrM 6606 0 0 0 0 0 0 0 16-3584
+chrM 6607 0 0 0 0 0 0 0 16-3584
+chrM 6608 0 0 0 0 0 0 0 16-3584
+chrM 6609 0 0 0 0 0 0 0 16-3584
+chrM 6610 0 0 0 0 0 0 0 16-3584
+chrM 6611 0 0 0 0 0 0 0 16-3584
+chrM 6612 0 0 0 0 0 0 0 16-3584
+chrM 6613 0 0 0 0 0 0 0 16-3584
+chrM 6614 0 0 0 0 0 0 0 16-3584
+chrM 6615 0 0 0 0 0 0 0 16-3584
+chrM 6616 0 0 0 0 0 0 0 16-3584
+chrM 6617 0 0 0 0 0 0 0 16-3584
+chrM 6618 0 0 0 0 0 0 0 16-3584
+chrM 6619 0 0 0 0 0 0 0 16-3584
+chrM 6620 0 0 0 0 0 0 0 16-3584
+chrM 6621 0 0 0 0 0 0 0 16-3584
+chrM 6622 0 0 0 0 0 0 0 16-3584
+chrM 6623 0 0 0 0 0 0 0 16-3584
+chrM 6624 0 0 0 0 0 0 0 16-3584
+chrM 6625 0 0 0 0 0 0 0 16-3584
+chrM 6626 0 0 0 0 0 0 0 16-3584
+chrM 6627 0 0 0 0 0 0 0 16-3584
+chrM 6628 0 0 0 0 0 0 0 16-3584
+chrM 6629 0 0 0 0 0 0 0 16-3584
+chrM 6630 0 0 0 0 0 0 0 16-3584
+chrM 6631 0 0 0 0 0 0 0 16-3584
+chrM 6632 0 0 0 0 0 0 0 16-3584
+chrM 6633 0 0 0 0 0 0 0 16-3584
+chrM 6634 0 0 0 0 0 0 0 16-3584
+chrM 6635 0 0 0 0 0 0 0 16-3584
+chrM 6636 0 0 0 0 0 0 0 16-3584
+chrM 6637 0 0 0 0 0 0 0 16-3584
+chrM 6638 0 0 0 0 0 0 0 16-3584
+chrM 6639 0 0 0 0 0 0 0 16-3584
+chrM 6640 0 0 0 0 0 0 0 16-3584
+chrM 6641 0 0 0 0 0 0 0 16-3584
+chrM 6642 0 0 0 0 0 0 0 16-3584
+chrM 6643 0 0 0 0 0 0 0 16-3584
+chrM 6644 0 0 0 0 0 0 0 16-3584
+chrM 6645 0 0 0 0 0 0 0 16-3584
+chrM 6646 0 0 0 0 0 0 0 16-3584
+chrM 6647 0 0 0 0 0 0 0 16-3584
+chrM 6648 0 0 0 0 0 0 0 16-3584
+chrM 6649 0 0 0 0 0 0 0 16-3584
+chrM 6650 0 0 0 0 0 0 0 16-3584
+chrM 6651 0 0 0 0 0 0 0 16-3584
+chrM 6652 0 0 0 0 0 0 0 16-3584
+chrM 6653 0 0 0 0 0 0 0 16-3584
+chrM 6654 0 0 0 0 0 0 0 16-3584
+chrM 6655 0 0 0 0 0 0 0 16-3584
+chrM 6656 0 0 0 0 0 0 0 16-3584
+chrM 6657 0 0 0 0 0 0 0 16-3584
+chrM 6658 0 0 0 0 0 0 0 16-3584
+chrM 6659 0 0 0 0 0 0 0 16-3584
+chrM 6660 0 0 0 0 0 0 0 16-3584
+chrM 6661 0 0 0 0 0 0 0 16-3584
+chrM 6662 0 0 0 0 0 0 0 16-3584
+chrM 6663 0 0 0 0 0 0 0 16-3584
+chrM 6664 0 0 0 0 0 0 0 16-3584
+chrM 6665 0 0 0 0 0 0 0 16-3584
+chrM 6666 0 0 0 0 0 0 0 16-3584
+chrM 6667 0 0 0 0 0 0 0 16-3584
+chrM 6668 0 0 0 0 0 0 0 16-3584
+chrM 6669 0 0 0 0 0 0 0 16-3584
+chrM 6670 0 0 0 0 0 0 0 16-3584
+chrM 6671 0 0 0 0 0 0 0 16-3584
+chrM 6672 0 0 0 0 0 0 0 16-3584
+chrM 6673 0 0 0 0 0 0 0 16-3584
+chrM 6674 0 0 0 0 0 0 0 16-3584
+chrM 6675 0 0 0 0 0 0 0 16-3584
+chrM 6676 0 0 0 0 0 0 0 16-3584
+chrM 6677 0 0 0 0 0 0 0 16-3584
+chrM 6678 0 0 0 0 0 0 0 16-3584
+chrM 6679 0 0 0 0 0 0 0 16-3584
+chrM 6680 0 0 0 0 0 0 0 16-3584
+chrM 6681 0 0 0 0 0 0 0 16-3584
+chrM 6682 0 0 0 0 0 0 0 16-3584
+chrM 6683 0 0 0 0 0 0 0 16-3584
+chrM 6684 0 0 0 0 0 0 0 16-3584
+chrM 6685 0 0 0 0 0 0 0 16-3584
+chrM 6686 0 0 0 0 0 0 0 16-3584
+chrM 6687 0 0 0 0 0 0 0 16-3584
+chrM 6688 0 0 0 0 0 0 0 16-3584
+chrM 6689 0 0 0 0 0 0 0 16-3584
+chrM 6690 0 0 0 0 0 0 0 16-3584
+chrM 6691 0 0 0 0 0 0 0 16-3584
+chrM 6692 0 0 0 0 0 0 0 16-3584
+chrM 6693 0 0 0 0 0 0 0 16-3584
+chrM 6694 0 0 0 0 0 0 0 16-3584
+chrM 6695 0 0 0 0 0 0 0 16-3584
+chrM 6696 0 0 0 0 0 0 0 16-3584
+chrM 6697 0 0 0 0 0 0 0 16-3584
+chrM 6698 0 0 0 0 0 0 0 16-3584
+chrM 6699 0 0 0 0 0 0 0 16-3584
+chrM 6700 0 0 0 0 0 0 0 16-3584
+chrM 6701 0 0 0 0 0 0 0 16-3584
+chrM 6702 0 0 0 0 0 0 0 16-3584
+chrM 6703 0 0 0 0 0 0 0 16-3584
+chrM 6704 0 0 0 0 0 0 0 16-3584
+chrM 6705 0 0 0 0 0 0 0 16-3584
+chrM 6706 0 0 0 0 0 0 0 16-3584
+chrM 6707 0 0 0 0 0 0 0 16-3584
+chrM 6708 0 0 0 0 0 0 0 16-3584
+chrM 6709 0 0 0 0 0 0 0 16-3584
+chrM 6710 0 0 0 0 0 0 0 16-3584
+chrM 6711 0 0 0 0 0 0 0 16-3584
+chrM 6712 0 0 0 0 0 0 0 16-3584
+chrM 6713 0 0 0 0 0 0 0 16-3584
+chrM 6714 0 0 0 0 0 0 0 16-3584
+chrM 6715 0 0 0 0 0 0 0 16-3584
+chrM 6716 0 0 0 0 0 0 0 16-3584
+chrM 6717 0 0 0 0 0 0 0 16-3584
+chrM 6718 0 0 0 0 0 0 0 16-3584
+chrM 6719 0 0 0 0 0 0 0 16-3584
+chrM 6720 0 0 0 0 0 0 0 16-3584
+chrM 6721 0 0 0 0 0 0 0 16-3584
+chrM 6722 0 0 0 0 0 0 0 16-3584
+chrM 6723 0 0 0 0 0 0 0 16-3584
+chrM 6724 0 0 0 0 0 0 0 16-3584
+chrM 6725 0 0 0 0 0 0 0 16-3584
+chrM 6726 0 0 0 0 0 0 0 16-3584
+chrM 6727 0 0 0 0 0 0 0 16-3584
+chrM 6728 0 0 0 0 0 0 0 16-3584
+chrM 6729 0 0 0 0 0 0 0 16-3584
+chrM 6730 0 0 0 0 0 0 0 16-3584
+chrM 6731 0 0 0 0 0 0 0 16-3584
+chrM 6732 0 0 0 0 0 0 0 16-3584
+chrM 6733 0 0 0 0 0 0 0 16-3584
+chrM 6734 0 0 0 0 0 0 0 16-3584
+chrM 6735 0 0 0 0 0 0 0 16-3584
+chrM 6736 0 0 0 0 0 0 0 16-3584
+chrM 6737 0 0 0 0 0 0 0 16-3584
+chrM 6738 0 0 0 0 0 0 0 16-3584
+chrM 6739 0 0 0 0 0 0 0 16-3584
+chrM 6740 0 0 0 0 0 0 0 16-3584
+chrM 6741 0 0 0 0 0 0 0 16-3584
+chrM 6742 0 0 0 0 0 0 0 16-3584
+chrM 6743 0 0 0 0 0 0 0 16-3584
+chrM 6744 0 0 0 0 0 0 0 16-3584
+chrM 6745 0 0 0 0 0 0 0 16-3584
+chrM 6746 0 0 0 0 0 0 0 16-3584
+chrM 6747 0 0 0 0 0 0 0 16-3584
+chrM 6748 0 0 0 0 0 0 0 16-3584
+chrM 6749 0 0 0 0 0 0 0 16-3584
+chrM 6750 0 0 0 0 0 0 0 16-3584
+chrM 6751 0 0 0 0 0 0 0 16-3584
+chrM 6752 0 0 0 0 0 0 0 16-3584
+chrM 6753 0 0 0 0 0 0 0 16-3584
+chrM 6754 0 0 0 0 0 0 0 16-3584
+chrM 6755 0 0 0 0 0 0 0 16-3584
+chrM 6756 0 0 0 0 0 0 0 16-3584
+chrM 6757 0 0 0 0 0 0 0 16-3584
+chrM 6758 0 0 0 0 0 0 0 16-3584
+chrM 6759 0 0 0 0 0 0 0 16-3584
+chrM 6760 0 0 0 0 0 0 0 16-3584
+chrM 6761 0 0 0 0 0 0 0 16-3584
+chrM 6762 0 0 0 0 0 0 0 16-3584
+chrM 6763 0 0 0 0 0 0 0 16-3584
+chrM 6764 0 0 0 0 0 0 0 16-3584
+chrM 6765 0 0 0 0 0 0 0 16-3584
+chrM 6766 0 0 0 0 0 0 0 16-3584
+chrM 6767 0 0 0 0 0 0 0 16-3584
+chrM 6768 0 0 0 0 0 0 0 16-3584
+chrM 6769 0 0 0 0 0 0 0 16-3584
+chrM 6770 0 0 0 0 0 0 0 16-3584
+chrM 6771 0 0 0 0 0 0 0 16-3584
+chrM 6772 0 0 0 0 0 0 0 16-3584
+chrM 6773 0 0 0 0 0 0 0 16-3584
+chrM 6774 0 0 0 0 0 0 0 16-3584
+chrM 6775 0 0 0 0 0 0 0 16-3584
+chrM 6776 0 0 0 0 0 0 0 16-3584
+chrM 6777 0 0 0 0 0 0 0 16-3584
+chrM 6778 0 0 0 0 0 0 0 16-3584
+chrM 6779 0 0 0 0 0 0 0 16-3584
+chrM 6780 0 0 0 0 0 0 0 16-3584
+chrM 6781 0 0 0 0 0 0 0 16-3584
+chrM 6782 0 0 0 0 0 0 0 16-3584
+chrM 6783 0 0 0 0 0 0 0 16-3584
+chrM 6784 0 0 0 0 0 0 0 16-3584
+chrM 6785 0 0 0 0 0 0 0 16-3584
+chrM 6786 0 0 0 0 0 0 0 16-3584
+chrM 6787 0 0 0 0 0 0 0 16-3584
+chrM 6788 0 0 0 0 0 0 0 16-3584
+chrM 6789 0 0 0 0 0 0 0 16-3584
+chrM 6790 0 0 0 0 0 0 0 16-3584
+chrM 6791 0 0 0 0 0 0 0 16-3584
+chrM 6792 0 0 0 0 0 0 0 16-3584
+chrM 6793 0 0 0 0 0 0 0 16-3584
+chrM 6794 0 0 0 0 0 0 0 16-3584
+chrM 6795 0 0 0 0 0 0 0 16-3584
+chrM 6796 0 0 0 0 0 0 0 16-3584
+chrM 6797 0 0 0 0 0 0 0 16-3584
+chrM 6798 0 0 0 0 0 0 0 16-3584
+chrM 6799 0 0 0 0 0 0 0 16-3584
+chrM 6800 0 0 0 0 0 0 0 16-3584
+chrM 6801 0 0 0 0 0 0 0 16-3584
+chrM 6802 0 0 0 0 0 0 0 16-3584
+chrM 6803 0 0 0 0 0 0 0 16-3584
+chrM 6804 0 0 0 0 0 0 0 16-3584
+chrM 6805 0 0 0 0 0 0 0 16-3584
+chrM 6806 0 0 0 0 0 0 0 16-3584
+chrM 6807 0 0 0 0 0 0 0 16-3584
+chrM 6808 0 0 0 0 0 0 0 16-3584
+chrM 6809 0 0 0 0 0 0 0 16-3584
+chrM 6810 0 0 0 0 0 0 0 16-3584
+chrM 6811 0 0 0 0 0 0 0 16-3584
+chrM 6812 0 0 0 0 0 0 0 16-3584
+chrM 6813 0 0 0 0 0 0 0 16-3584
+chrM 6814 0 0 0 0 0 0 0 16-3584
+chrM 6815 0 0 0 0 0 0 0 16-3584
+chrM 6816 0 0 0 0 0 0 0 16-3584
+chrM 6817 0 0 0 0 0 0 0 16-3584
+chrM 6818 0 0 0 0 0 0 0 16-3584
+chrM 6819 0 0 0 0 0 0 0 16-3584
+chrM 6820 0 0 0 0 0 0 0 16-3584
+chrM 6821 0 0 0 0 0 0 0 16-3584
+chrM 6822 0 0 0 0 0 0 0 16-3584
+chrM 6823 0 0 0 0 0 0 0 16-3584
+chrM 6824 0 0 0 0 0 0 0 16-3584
+chrM 6825 0 0 0 0 0 0 0 16-3584
+chrM 6826 0 0 0 0 0 0 0 16-3584
+chrM 6827 0 0 0 0 0 0 0 16-3584
+chrM 6828 0 0 0 0 0 0 0 16-3584
+chrM 6829 0 0 0 0 0 0 0 16-3584
+chrM 6830 0 0 0 0 0 0 0 16-3584
+chrM 6831 0 0 0 0 0 0 0 16-3584
+chrM 6832 0 0 0 0 0 0 0 16-3584
+chrM 6833 0 0 0 0 0 0 0 16-3584
+chrM 6834 0 0 0 0 0 0 0 16-3584
+chrM 6835 0 0 0 0 0 0 0 16-3584
+chrM 6836 0 0 0 0 0 0 0 16-3584
+chrM 6837 0 0 0 0 0 0 0 16-3584
+chrM 6838 0 0 0 0 0 0 0 16-3584
+chrM 6839 0 0 0 0 0 0 0 16-3584
+chrM 6840 0 0 0 0 0 0 0 16-3584
+chrM 6841 0 0 0 0 0 0 0 16-3584
+chrM 6842 0 0 0 0 0 0 0 16-3584
+chrM 6843 0 0 0 0 0 0 0 16-3584
+chrM 6844 0 0 0 0 0 0 0 16-3584
+chrM 6845 0 0 0 0 0 0 0 16-3584
+chrM 6846 0 0 0 0 0 0 0 16-3584
+chrM 6847 0 0 0 0 0 0 0 16-3584
+chrM 6848 0 0 0 0 0 0 0 16-3584
+chrM 6849 0 0 0 0 0 0 0 16-3584
+chrM 6850 0 0 0 0 0 0 0 16-3584
+chrM 6851 0 0 0 0 0 0 0 16-3584
+chrM 6852 0 0 0 0 0 0 0 16-3584
+chrM 6853 0 0 0 0 0 0 0 16-3584
+chrM 6854 0 0 0 0 0 0 0 16-3584
+chrM 6855 0 0 0 0 0 0 0 16-3584
+chrM 6856 0 0 0 0 0 0 0 16-3584
+chrM 6857 0 0 0 0 0 0 0 16-3584
+chrM 6858 0 0 0 0 0 0 0 16-3584
+chrM 6859 0 0 0 0 0 0 0 16-3584
+chrM 6860 0 0 0 0 0 0 0 16-3584
+chrM 6861 0 0 0 0 0 0 0 16-3584
+chrM 6862 0 0 0 0 0 0 0 16-3584
+chrM 6863 0 0 0 0 0 0 0 16-3584
+chrM 6864 0 0 0 0 0 0 0 16-3584
+chrM 6865 0 0 0 0 0 0 0 16-3584
+chrM 6866 0 0 0 0 0 0 0 16-3584
+chrM 6867 0 0 0 0 0 0 0 16-3584
+chrM 6868 0 0 0 0 0 0 0 16-3584
+chrM 6869 0 0 0 0 0 0 0 16-3584
+chrM 6870 0 0 0 0 0 0 0 16-3584
+chrM 6871 0 0 0 0 0 0 0 16-3584
+chrM 6872 0 0 0 0 0 0 0 16-3584
+chrM 6873 0 0 0 0 0 0 0 16-3584
+chrM 6874 0 0 0 0 0 0 0 16-3584
+chrM 6875 0 0 0 0 0 0 0 16-3584
+chrM 6876 0 0 0 0 0 0 0 16-3584
+chrM 6877 0 0 0 0 0 0 0 16-3584
+chrM 6878 0 0 0 0 0 0 0 16-3584
+chrM 6879 0 0 0 0 0 0 0 16-3584
+chrM 6880 0 0 0 0 0 0 0 16-3584
+chrM 6881 0 0 0 0 0 0 0 16-3584
+chrM 6882 0 0 0 0 0 0 0 16-3584
+chrM 6883 0 0 0 0 0 0 0 16-3584
+chrM 6884 0 0 0 0 0 0 0 16-3584
+chrM 6885 0 0 0 0 0 0 0 16-3584
+chrM 6886 0 0 0 0 0 0 0 16-3584
+chrM 6887 0 0 0 0 0 0 0 16-3584
+chrM 6888 0 0 0 0 0 0 0 16-3584
+chrM 6889 0 0 0 0 0 0 0 16-3584
+chrM 6890 0 0 0 0 0 0 0 16-3584
+chrM 6891 0 0 0 0 0 0 0 16-3584
+chrM 6892 0 0 0 0 0 0 0 16-3584
+chrM 6893 0 0 0 0 0 0 0 16-3584
+chrM 6894 0 0 0 0 0 0 0 16-3584
+chrM 6895 0 0 0 0 0 0 0 16-3584
+chrM 6896 0 0 0 0 0 0 0 16-3584
+chrM 6897 0 0 0 0 0 0 0 16-3584
+chrM 6898 0 0 0 0 0 0 0 16-3584
+chrM 6899 0 0 0 0 0 0 0 16-3584
+chrM 6900 0 0 0 0 0 0 0 16-3584
+chrM 6901 0 0 0 0 0 0 0 16-3584
+chrM 6902 0 0 0 0 0 0 0 16-3584
+chrM 6903 0 0 0 0 0 0 0 16-3584
+chrM 6904 0 0 0 0 0 0 0 16-3584
+chrM 6905 0 0 0 0 0 0 0 16-3584
+chrM 6906 0 0 0 0 0 0 0 16-3584
+chrM 6907 0 0 0 0 0 0 0 16-3584
+chrM 6908 0 0 0 0 0 0 0 16-3584
+chrM 6909 0 0 0 0 0 0 0 16-3584
+chrM 6910 0 0 0 0 0 0 0 16-3584
+chrM 6911 0 0 0 0 0 0 0 16-3584
+chrM 6912 0 0 0 0 0 0 0 16-3584
+chrM 6913 0 0 0 0 0 0 0 16-3584
+chrM 6914 0 0 0 0 0 0 0 16-3584
+chrM 6915 0 0 0 0 0 0 0 16-3584
+chrM 6916 0 0 0 0 0 0 0 16-3584
+chrM 6917 0 0 0 0 0 0 0 16-3584
+chrM 6918 0 0 0 0 0 0 0 16-3584
+chrM 6919 0 0 0 0 0 0 0 16-3584
+chrM 6920 0 0 0 0 0 0 0 16-3584
+chrM 6921 0 0 0 0 0 0 0 16-3584
+chrM 6922 0 0 0 0 0 0 0 16-3584
+chrM 6923 0 0 0 0 0 0 0 16-3584
+chrM 6924 0 0 0 0 0 0 0 16-3584
+chrM 6925 0 0 0 0 0 0 0 16-3584
+chrM 6926 0 0 0 0 0 0 0 16-3584
+chrM 6927 0 0 0 0 0 0 0 16-3584
+chrM 6928 0 0 0 0 0 0 0 16-3584
+chrM 6929 0 0 0 0 0 0 0 16-3584
+chrM 6930 0 0 0 0 0 0 0 16-3584
+chrM 6931 0 0 0 0 0 0 0 16-3584
+chrM 6932 0 0 0 0 0 0 0 16-3584
+chrM 6933 0 0 0 0 0 0 0 16-3584
+chrM 6934 0 0 0 0 0 0 0 16-3584
+chrM 6935 0 0 0 0 0 0 0 16-3584
+chrM 6936 0 0 0 0 0 0 0 16-3584
+chrM 6937 0 0 0 0 0 0 0 16-3584
+chrM 6938 0 0 0 0 0 0 0 16-3584
+chrM 6939 0 0 0 0 0 0 0 16-3584
+chrM 6940 0 0 0 0 0 0 0 16-3584
+chrM 6941 0 0 0 0 0 0 0 16-3584
+chrM 6942 0 0 0 0 0 0 0 16-3584
+chrM 6943 0 0 0 0 0 0 0 16-3584
+chrM 6944 0 0 0 0 0 0 0 16-3584
+chrM 6945 0 0 0 0 0 0 0 16-3584
+chrM 6946 0 0 0 0 0 0 0 16-3584
+chrM 6947 0 0 0 0 0 0 0 16-3584
+chrM 6948 0 0 0 0 0 0 0 16-3584
+chrM 6949 0 0 0 0 0 0 0 16-3584
+chrM 6950 0 0 0 0 0 0 0 16-3584
+chrM 6951 0 0 0 0 0 0 0 16-3584
+chrM 6952 0 0 0 0 0 0 0 16-3584
+chrM 6953 0 0 0 0 0 0 0 16-3584
+chrM 6954 0 0 0 0 0 0 0 16-3584
+chrM 6955 0 0 0 0 0 0 0 16-3584
+chrM 6956 0 0 0 0 0 0 0 16-3584
+chrM 6957 0 0 0 0 0 0 0 16-3584
+chrM 6958 0 0 0 0 0 0 0 16-3584
+chrM 6959 0 0 0 0 0 0 0 16-3584
+chrM 6960 0 0 0 0 0 0 0 16-3584
+chrM 6961 0 0 0 0 0 0 0 16-3584
+chrM 6962 0 0 0 0 0 0 0 16-3584
+chrM 6963 0 0 0 0 0 0 0 16-3584
+chrM 6964 0 0 0 0 0 0 0 16-3584
+chrM 6965 0 0 0 0 0 0 0 16-3584
+chrM 6966 0 0 0 0 0 0 0 16-3584
+chrM 6967 0 0 0 0 0 0 0 16-3584
+chrM 6968 0 0 0 0 0 0 0 16-3584
+chrM 6969 0 0 0 0 0 0 0 16-3584
+chrM 6970 0 0 0 0 0 0 0 16-3584
+chrM 6971 0 0 0 0 0 0 0 16-3584
+chrM 6972 0 0 0 0 0 0 0 16-3584
+chrM 6973 0 0 0 0 0 0 0 16-3584
+chrM 6974 0 0 0 0 0 0 0 16-3584
+chrM 6975 0 0 0 0 0 0 0 16-3584
+chrM 6976 0 0 0 0 0 0 0 16-3584
+chrM 6977 0 0 0 0 0 0 0 16-3584
+chrM 6978 0 0 0 0 0 0 0 16-3584
+chrM 6979 0 0 0 0 0 0 0 16-3584
+chrM 6980 0 0 0 0 0 0 0 16-3584
+chrM 6981 0 0 0 0 0 0 0 16-3584
+chrM 6982 0 0 0 0 0 0 0 16-3584
+chrM 6983 0 0 0 0 0 0 0 16-3584
+chrM 6984 0 0 0 0 0 0 0 16-3584
+chrM 6985 0 0 0 0 0 0 0 16-3584
+chrM 6986 0 0 0 0 0 0 0 16-3584
+chrM 6987 0 0 0 0 0 0 0 16-3584
+chrM 6988 0 0 0 0 0 0 0 16-3584
+chrM 6989 0 0 0 0 0 0 0 16-3584
+chrM 6990 0 0 0 0 0 0 0 16-3584
+chrM 6991 0 0 0 0 0 0 0 16-3584
+chrM 6992 0 0 0 0 0 0 0 16-3584
+chrM 6993 0 0 0 0 0 0 0 16-3584
+chrM 6994 0 0 0 0 0 0 0 16-3584
+chrM 6995 0 0 0 0 0 0 0 16-3584
+chrM 6996 0 0 0 0 0 0 0 16-3584
+chrM 6997 0 0 0 0 0 0 0 16-3584
+chrM 6998 0 0 0 0 0 0 0 16-3584
+chrM 6999 0 0 0 0 0 0 0 16-3584
+chrM 7000 0 0 0 0 0 0 0 16-3584
+chrM 7001 0 0 0 0 0 0 0 16-3584
+chrM 7002 0 0 0 0 0 0 0 16-3584
+chrM 7003 0 0 0 0 0 0 0 16-3584
+chrM 7004 0 0 0 0 0 0 0 16-3584
+chrM 7005 0 0 0 0 0 0 0 16-3584
+chrM 7006 0 0 0 0 0 0 0 16-3584
+chrM 7007 0 0 0 0 0 0 0 16-3584
+chrM 7008 0 0 0 0 0 0 0 16-3584
+chrM 7009 0 0 0 0 0 0 0 16-3584
+chrM 7010 0 0 0 0 0 0 0 16-3584
+chrM 7011 0 0 0 0 0 0 0 16-3584
+chrM 7012 0 0 0 0 0 0 0 16-3584
+chrM 7013 0 0 0 0 0 0 0 16-3584
+chrM 7014 0 0 0 0 0 0 0 16-3584
+chrM 7015 0 0 0 0 0 0 0 16-3584
+chrM 7016 0 0 0 0 0 0 0 16-3584
+chrM 7017 0 0 0 0 0 0 0 16-3584
+chrM 7018 0 0 0 0 0 0 0 16-3584
+chrM 7019 0 0 0 0 0 0 0 16-3584
+chrM 7020 0 0 0 0 0 0 0 16-3584
+chrM 7021 0 0 0 0 0 0 0 16-3584
+chrM 7022 0 0 0 0 0 0 0 16-3584
+chrM 7023 0 0 0 0 0 0 0 16-3584
+chrM 7024 0 0 0 0 0 0 0 16-3584
+chrM 7025 0 0 0 0 0 0 0 16-3584
+chrM 7026 0 0 0 0 0 0 0 16-3584
+chrM 7027 0 0 0 0 0 0 0 16-3584
+chrM 7028 0 0 0 0 0 0 0 16-3584
+chrM 7029 0 0 0 0 0 0 0 16-3584
+chrM 7030 0 0 0 0 0 0 0 16-3584
+chrM 7031 0 0 0 0 0 0 0 16-3584
+chrM 7032 0 0 0 0 0 0 0 16-3584
+chrM 7033 0 0 0 0 0 0 0 16-3584
+chrM 7034 0 0 0 0 0 0 0 16-3584
+chrM 7035 0 0 0 0 0 0 0 16-3584
+chrM 7036 0 0 0 0 0 0 0 16-3584
+chrM 7037 0 0 0 0 0 0 0 16-3584
+chrM 7038 0 0 0 0 0 0 0 16-3584
+chrM 7039 0 0 0 0 0 0 0 16-3584
+chrM 7040 0 0 0 0 0 0 0 16-3584
+chrM 7041 0 0 0 0 0 0 0 16-3584
+chrM 7042 0 0 0 0 0 0 0 16-3584
+chrM 7043 0 0 0 0 0 0 0 16-3584
+chrM 7044 0 0 0 0 0 0 0 16-3584
+chrM 7045 0 0 0 0 0 0 0 16-3584
+chrM 7046 0 0 0 0 0 0 0 16-3584
+chrM 7047 0 0 0 0 0 0 0 16-3584
+chrM 7048 0 0 0 0 0 0 0 16-3584
+chrM 7049 0 0 0 0 0 0 0 16-3584
+chrM 7050 0 0 0 0 0 0 0 16-3584
+chrM 7051 0 0 0 0 0 0 0 16-3584
+chrM 7052 0 0 0 0 0 0 0 16-3584
+chrM 7053 0 0 0 0 0 0 0 16-3584
+chrM 7054 0 0 0 0 0 0 0 16-3584
+chrM 7055 0 0 0 0 0 0 0 16-3584
+chrM 7056 0 0 0 0 0 0 0 16-3584
+chrM 7057 0 0 0 0 0 0 0 16-3584
+chrM 7058 0 0 0 0 0 0 0 16-3584
+chrM 7059 0 0 0 0 0 0 0 16-3584
+chrM 7060 0 0 0 0 0 0 0 16-3584
+chrM 7061 0 0 0 0 0 0 0 16-3584
+chrM 7062 0 0 0 0 0 0 0 16-3584
+chrM 7063 0 0 0 0 0 0 0 16-3584
+chrM 7064 0 0 0 0 0 0 0 16-3584
+chrM 7065 0 0 0 0 0 0 0 16-3584
+chrM 7066 0 0 0 0 0 0 0 16-3584
+chrM 7067 0 0 0 0 0 0 0 16-3584
+chrM 7068 0 0 0 0 0 0 0 16-3584
+chrM 7069 0 0 0 0 0 0 0 16-3584
+chrM 7070 0 0 0 0 0 0 0 16-3584
+chrM 7071 0 0 0 0 0 0 0 16-3584
+chrM 7072 0 0 0 0 0 0 0 16-3584
+chrM 7073 0 0 0 0 0 0 0 16-3584
+chrM 7074 0 0 0 0 0 0 0 16-3584
+chrM 7075 0 0 0 0 0 0 0 16-3584
+chrM 7076 0 0 0 0 0 0 0 16-3584
+chrM 7077 0 0 0 0 0 0 0 16-3584
+chrM 7078 0 0 0 0 0 0 0 16-3584
+chrM 7079 0 0 0 0 0 0 0 16-3584
+chrM 7080 0 0 0 0 0 0 0 16-3584
+chrM 7081 0 0 0 0 0 0 0 16-3584
+chrM 7082 0 0 0 0 0 0 0 16-3584
+chrM 7083 0 0 0 0 0 0 0 16-3584
+chrM 7084 0 0 0 0 0 0 0 16-3584
+chrM 7085 0 0 0 0 0 0 0 16-3584
+chrM 7086 0 0 0 0 0 0 0 16-3584
+chrM 7087 0 0 0 0 0 0 0 16-3584
+chrM 7088 0 0 0 0 0 0 0 16-3584
+chrM 7089 0 0 0 0 0 0 0 16-3584
+chrM 7090 0 0 0 0 0 0 0 16-3584
+chrM 7091 0 0 0 0 0 0 0 16-3584
+chrM 7092 0 0 0 0 0 0 0 16-3584
+chrM 7093 0 0 0 0 0 0 0 16-3584
+chrM 7094 0 0 0 0 0 0 0 16-3584
+chrM 7095 0 0 0 0 0 0 0 16-3584
+chrM 7096 0 0 0 0 0 0 0 16-3584
+chrM 7097 0 0 0 0 0 0 0 16-3584
+chrM 7098 0 0 0 0 0 0 0 16-3584
+chrM 7099 0 0 0 0 0 0 0 16-3584
+chrM 7100 0 0 0 0 0 0 0 16-3584
+chrM 7101 0 0 0 0 0 0 0 16-3584
+chrM 7102 0 0 0 0 0 0 0 16-3584
+chrM 7103 0 0 0 0 0 0 0 16-3584
+chrM 7104 0 0 0 0 0 0 0 16-3584
+chrM 7105 0 0 0 0 0 0 0 16-3584
+chrM 7106 0 0 0 0 0 0 0 16-3584
+chrM 7107 0 0 0 0 0 0 0 16-3584
+chrM 7108 0 0 0 0 0 0 0 16-3584
+chrM 7109 0 0 0 0 0 0 0 16-3584
+chrM 7110 0 0 0 0 0 0 0 16-3584
+chrM 7111 0 0 0 0 0 0 0 16-3584
+chrM 7112 0 0 0 0 0 0 0 16-3584
+chrM 7113 0 0 0 0 0 0 0 16-3584
+chrM 7114 0 0 0 0 0 0 0 16-3584
+chrM 7115 0 0 0 0 0 0 0 16-3584
+chrM 7116 0 0 0 0 0 0 0 16-3584
+chrM 7117 0 0 0 0 0 0 0 16-3584
+chrM 7118 0 0 0 0 0 0 0 16-3584
+chrM 7119 0 0 0 0 0 0 0 16-3584
+chrM 7120 0 0 0 0 0 0 0 16-3584
+chrM 7121 0 0 0 0 0 0 0 16-3584
+chrM 7122 0 0 0 0 0 0 0 16-3584
+chrM 7123 0 0 0 0 0 0 0 16-3584
+chrM 7124 0 0 0 0 0 0 0 16-3584
+chrM 7125 0 0 0 0 0 0 0 16-3584
+chrM 7126 0 0 0 0 0 0 0 16-3584
+chrM 7127 0 0 0 0 0 0 0 16-3584
+chrM 7128 0 0 0 0 0 0 0 16-3584
+chrM 7129 0 0 0 0 0 0 0 16-3584
+chrM 7130 0 0 0 0 0 0 0 16-3584
+chrM 7131 0 0 0 0 0 0 0 16-3584
+chrM 7132 0 0 0 0 0 0 0 16-3584
+chrM 7133 0 0 0 0 0 0 0 16-3584
+chrM 7134 0 0 0 0 0 0 0 16-3584
+chrM 7135 0 0 0 0 0 0 0 16-3584
+chrM 7136 0 0 0 0 0 0 0 16-3584
+chrM 7137 0 0 0 0 0 0 0 16-3584
+chrM 7138 0 0 0 0 0 0 0 16-3584
+chrM 7139 0 0 0 0 0 0 0 16-3584
+chrM 7140 0 0 0 0 0 0 0 16-3584
+chrM 7141 0 0 0 0 0 0 0 16-3584
+chrM 7142 0 0 0 0 0 0 0 16-3584
+chrM 7143 0 0 0 0 0 0 0 16-3584
+chrM 7144 0 0 0 0 0 0 0 16-3584
+chrM 7145 0 0 0 0 0 0 0 16-3584
+chrM 7146 0 0 0 0 0 0 0 16-3584
+chrM 7147 0 0 0 0 0 0 0 16-3584
+chrM 7148 0 0 0 0 0 0 0 16-3584
+chrM 7149 0 0 0 0 0 0 0 16-3584
+chrM 7150 0 0 0 0 0 0 0 16-3584
+chrM 7151 0 0 0 0 0 0 0 16-3584
+chrM 7152 0 0 0 0 0 0 0 16-3584
+chrM 7153 0 0 0 0 0 0 0 16-3584
+chrM 7154 0 0 0 0 0 0 0 16-3584
+chrM 7155 0 0 0 0 0 0 0 16-3584
+chrM 7156 0 0 0 0 0 0 0 16-3584
+chrM 7157 0 0 0 0 0 0 0 16-3584
+chrM 7158 0 0 0 0 0 0 0 16-3584
+chrM 7159 0 0 0 0 0 0 0 16-3584
+chrM 7160 0 0 0 0 0 0 0 16-3584
+chrM 7161 0 0 0 0 0 0 0 16-3584
+chrM 7162 0 0 0 0 0 0 0 16-3584
+chrM 7163 0 0 0 0 0 0 0 16-3584
+chrM 7164 0 0 0 0 0 0 0 16-3584
+chrM 7165 0 0 0 0 0 0 0 16-3584
+chrM 7166 0 0 0 0 0 0 0 16-3584
+chrM 7167 0 0 0 0 0 0 0 16-3584
+chrM 7168 0 0 0 0 0 0 0 16-3584
+chrM 7169 0 0 0 0 0 0 0 16-3584
+chrM 7170 0 0 0 0 0 0 0 16-3584
+chrM 7171 0 0 0 0 0 0 0 16-3584
+chrM 7172 0 0 0 0 0 0 0 16-3584
+chrM 7173 0 0 0 0 0 0 0 16-3584
+chrM 7174 0 0 0 0 0 0 0 16-3584
+chrM 7175 0 0 0 0 0 0 0 16-3584
+chrM 7176 0 0 0 0 0 0 0 16-3584
+chrM 7177 0 0 0 0 0 0 0 16-3584
+chrM 7178 0 0 0 0 0 0 0 16-3584
+chrM 7179 0 0 0 0 0 0 0 16-3584
+chrM 7180 0 0 0 0 0 0 0 16-3584
+chrM 7181 0 0 0 0 0 0 0 16-3584
+chrM 7182 0 0 0 0 0 0 0 16-3584
+chrM 7183 0 0 0 0 0 0 0 16-3584
+chrM 7184 0 0 0 0 0 0 0 16-3584
+chrM 7185 0 0 0 0 0 0 0 16-3584
+chrM 7186 0 0 0 0 0 0 0 16-3584
+chrM 7187 0 0 0 0 0 0 0 16-3584
+chrM 7188 0 0 0 0 0 0 0 16-3584
+chrM 7189 0 0 0 0 0 0 0 16-3584
+chrM 7190 0 0 0 0 0 0 0 16-3584
+chrM 7191 0 0 0 0 0 0 0 16-3584
+chrM 7192 0 0 0 0 0 0 0 16-3584
+chrM 7193 0 0 0 0 0 0 0 16-3584
+chrM 7194 0 0 0 0 0 0 0 16-3584
+chrM 7195 0 0 0 0 0 0 0 16-3584
+chrM 7196 0 0 0 0 0 0 0 16-3584
+chrM 7197 0 0 0 0 0 0 0 16-3584
+chrM 7198 0 0 0 0 0 0 0 16-3584
+chrM 7199 0 0 0 0 0 0 0 16-3584
+chrM 7200 0 0 0 0 0 0 0 16-3584
+chrM 7201 0 0 0 0 0 0 0 16-3584
+chrM 7202 0 0 0 0 0 0 0 16-3584
+chrM 7203 0 0 0 0 0 0 0 16-3584
+chrM 7204 0 0 0 0 0 0 0 16-3584
+chrM 7205 0 0 0 0 0 0 0 16-3584
+chrM 7206 0 0 0 0 0 0 0 16-3584
+chrM 7207 0 0 0 0 0 0 0 16-3584
+chrM 7208 0 0 0 0 0 0 0 16-3584
+chrM 7209 0 0 0 0 0 0 0 16-3584
+chrM 7210 0 0 0 0 0 0 0 16-3584
+chrM 7211 0 0 0 0 0 0 0 16-3584
+chrM 7212 0 0 0 0 0 0 0 16-3584
+chrM 7213 0 0 0 0 0 0 0 16-3584
+chrM 7214 0 0 0 0 0 0 0 16-3584
+chrM 7215 0 0 0 0 0 0 0 16-3584
+chrM 7216 0 0 0 0 0 0 0 16-3584
+chrM 7217 0 0 0 0 0 0 0 16-3584
+chrM 7218 0 0 0 0 0 0 0 16-3584
+chrM 7219 0 0 0 0 0 0 0 16-3584
+chrM 7220 0 0 0 0 0 0 0 16-3584
+chrM 7221 0 0 0 0 0 0 0 16-3584
+chrM 7222 0 0 0 0 0 0 0 16-3584
+chrM 7223 0 0 0 0 0 0 0 16-3584
+chrM 7224 0 0 0 0 0 0 0 16-3584
+chrM 7225 0 0 0 0 0 0 0 16-3584
+chrM 7226 0 0 0 0 0 0 0 16-3584
+chrM 7227 0 0 0 0 0 0 0 16-3584
+chrM 7228 0 0 0 0 0 0 0 16-3584
+chrM 7229 0 0 0 0 0 0 0 16-3584
+chrM 7230 0 0 0 0 0 0 0 16-3584
+chrM 7231 0 0 0 0 0 0 0 16-3584
+chrM 7232 0 0 0 0 0 0 0 16-3584
+chrM 7233 0 0 0 0 0 0 0 16-3584
+chrM 7234 0 0 0 0 0 0 0 16-3584
+chrM 7235 0 0 0 0 0 0 0 16-3584
+chrM 7236 0 0 0 0 0 0 0 16-3584
+chrM 7237 0 0 0 0 0 0 0 16-3584
+chrM 7238 0 0 0 0 0 0 0 16-3584
+chrM 7239 0 0 0 0 0 0 0 16-3584
+chrM 7240 0 0 0 0 0 0 0 16-3584
+chrM 7241 0 0 0 0 0 0 0 16-3584
+chrM 7242 0 0 0 0 0 0 0 16-3584
+chrM 7243 0 0 0 0 0 0 0 16-3584
+chrM 7244 0 0 0 0 0 0 0 16-3584
+chrM 7245 0 0 0 0 0 0 0 16-3584
+chrM 7246 0 0 0 0 0 0 0 16-3584
+chrM 7247 0 0 0 0 0 0 0 16-3584
+chrM 7248 0 0 0 0 0 0 0 16-3584
+chrM 7249 0 0 0 0 0 0 0 16-3584
+chrM 7250 0 0 0 0 0 0 0 16-3584
+chrM 7251 0 0 0 0 0 0 0 16-3584
+chrM 7252 0 0 0 0 0 0 0 16-3584
+chrM 7253 0 0 0 0 0 0 0 16-3584
+chrM 7254 0 0 0 0 0 0 0 16-3584
+chrM 7255 0 0 0 0 0 0 0 16-3584
+chrM 7256 0 0 0 0 0 0 0 16-3584
+chrM 7257 0 0 0 0 0 0 0 16-3584
+chrM 7258 0 0 0 0 0 0 0 16-3584
+chrM 7259 0 0 0 0 0 0 0 16-3584
+chrM 7260 0 0 0 0 0 0 0 16-3584
+chrM 7261 0 0 0 0 0 0 0 16-3584
+chrM 7262 0 0 0 0 0 0 0 16-3584
+chrM 7263 0 0 0 0 0 0 0 16-3584
+chrM 7264 0 0 0 0 0 0 0 16-3584
+chrM 7265 0 0 0 0 0 0 0 16-3584
+chrM 7266 0 0 0 0 0 0 0 16-3584
+chrM 7267 0 0 0 0 0 0 0 16-3584
+chrM 7268 0 0 0 0 0 0 0 16-3584
+chrM 7269 0 0 0 0 0 0 0 16-3584
+chrM 7270 0 0 0 0 0 0 0 16-3584
+chrM 7271 0 0 0 0 0 0 0 16-3584
+chrM 7272 0 0 0 0 0 0 0 16-3584
+chrM 7273 0 0 0 0 0 0 0 16-3584
+chrM 7274 0 0 0 0 0 0 0 16-3584
+chrM 7275 0 0 0 0 0 0 0 16-3584
+chrM 7276 0 0 0 0 0 0 0 16-3584
+chrM 7277 0 0 0 0 0 0 0 16-3584
+chrM 7278 0 0 0 0 0 0 0 16-3584
+chrM 7279 0 0 0 0 0 0 0 16-3584
+chrM 7280 0 0 0 0 0 0 0 16-3584
+chrM 7281 0 0 0 0 0 0 0 16-3584
+chrM 7282 0 0 0 0 0 0 0 16-3584
+chrM 7283 0 0 0 0 0 0 0 16-3584
+chrM 7284 0 0 0 0 0 0 0 16-3584
+chrM 7285 0 0 0 0 0 0 0 16-3584
+chrM 7286 0 0 0 0 0 0 0 16-3584
+chrM 7287 0 0 0 0 0 0 0 16-3584
+chrM 7288 0 0 0 0 0 0 0 16-3584
+chrM 7289 0 0 0 0 0 0 0 16-3584
+chrM 7290 0 0 0 0 0 0 0 16-3584
+chrM 7291 0 0 0 0 0 0 0 16-3584
+chrM 7292 0 0 0 0 0 0 0 16-3584
+chrM 7293 0 0 0 0 0 0 0 16-3584
+chrM 7294 0 0 0 0 0 0 0 16-3584
+chrM 7295 0 0 0 0 0 0 0 16-3584
+chrM 7296 0 0 0 0 0 0 0 16-3584
+chrM 7297 0 0 0 0 0 0 0 16-3584
+chrM 7298 0 0 0 0 0 0 0 16-3584
+chrM 7299 0 0 0 0 0 0 0 16-3584
+chrM 7300 0 0 0 0 0 0 0 16-3584
+chrM 7301 0 0 0 0 0 0 0 16-3584
+chrM 7302 0 0 0 0 0 0 0 16-3584
+chrM 7303 0 0 0 0 0 0 0 16-3584
+chrM 7304 0 0 0 0 0 0 0 16-3584
+chrM 7305 0 0 0 0 0 0 0 16-3584
+chrM 7306 0 0 0 0 0 0 0 16-3584
+chrM 7307 0 0 0 0 0 0 0 16-3584
+chrM 7308 0 0 0 0 0 0 0 16-3584
+chrM 7309 0 0 0 0 0 0 0 16-3584
+chrM 7310 0 0 0 0 0 0 0 16-3584
+chrM 7311 0 0 0 0 0 0 0 16-3584
+chrM 7312 0 0 0 0 0 0 0 16-3584
+chrM 7313 0 0 0 0 0 0 0 16-3584
+chrM 7314 0 0 0 0 0 0 0 16-3584
+chrM 7315 0 0 0 0 0 0 0 16-3584
+chrM 7316 0 0 0 0 0 0 0 16-3584
+chrM 7317 0 0 0 0 0 0 0 16-3584
+chrM 7318 0 0 0 0 0 0 0 16-3584
+chrM 7319 0 0 0 0 0 0 0 16-3584
+chrM 7320 0 0 0 0 0 0 0 16-3584
+chrM 7321 0 0 0 0 0 0 0 16-3584
+chrM 7322 0 0 0 0 0 0 0 16-3584
+chrM 7323 0 0 0 0 0 0 0 16-3584
+chrM 7324 0 0 0 0 0 0 0 16-3584
+chrM 7325 0 0 0 0 0 0 0 16-3584
+chrM 7326 0 0 0 0 0 0 0 16-3584
+chrM 7327 0 0 0 0 0 0 0 16-3584
+chrM 7328 0 0 0 0 0 0 0 16-3584
+chrM 7329 0 0 0 0 0 0 0 16-3584
+chrM 7330 0 0 0 0 0 0 0 16-3584
+chrM 7331 0 0 0 0 0 0 0 16-3584
+chrM 7332 0 0 0 0 0 0 0 16-3584
+chrM 7333 0 0 0 0 0 0 0 16-3584
+chrM 7334 0 0 0 0 0 0 0 16-3584
+chrM 7335 0 0 0 0 0 0 0 16-3584
+chrM 7336 0 0 0 0 0 0 0 16-3584
+chrM 7337 0 0 0 0 0 0 0 16-3584
+chrM 7338 0 0 0 0 0 0 0 16-3584
+chrM 7339 0 0 0 0 0 0 0 16-3584
+chrM 7340 0 0 0 0 0 0 0 16-3584
+chrM 7341 0 0 0 0 0 0 0 16-3584
+chrM 7342 0 0 0 0 0 0 0 16-3584
+chrM 7343 0 0 0 0 0 0 0 16-3584
+chrM 7344 0 0 0 0 0 0 0 16-3584
+chrM 7345 0 0 0 0 0 0 0 16-3584
+chrM 7346 0 0 0 0 0 0 0 16-3584
+chrM 7347 0 0 0 0 0 0 0 16-3584
+chrM 7348 0 0 0 0 0 0 0 16-3584
+chrM 7349 0 0 0 0 0 0 0 16-3584
+chrM 7350 0 0 0 0 0 0 0 16-3584
+chrM 7351 0 0 0 0 0 0 0 16-3584
+chrM 7352 0 0 0 0 0 0 0 16-3584
+chrM 7353 0 0 0 0 0 0 0 16-3584
+chrM 7354 0 0 0 0 0 0 0 16-3584
+chrM 7355 0 0 0 0 0 0 0 16-3584
+chrM 7356 0 0 0 0 0 0 0 16-3584
+chrM 7357 0 0 0 0 0 0 0 16-3584
+chrM 7358 0 0 0 0 0 0 0 16-3584
+chrM 7359 0 0 0 0 0 0 0 16-3584
+chrM 7360 0 0 0 0 0 0 0 16-3584
+chrM 7361 0 0 0 0 0 0 0 16-3584
+chrM 7362 0 0 0 0 0 0 0 16-3584
+chrM 7363 0 0 0 0 0 0 0 16-3584
+chrM 7364 0 0 0 0 0 0 0 16-3584
+chrM 7365 0 0 0 0 0 0 0 16-3584
+chrM 7366 0 0 0 0 0 0 0 16-3584
+chrM 7367 0 0 0 0 0 0 0 16-3584
+chrM 7368 0 0 0 0 0 0 0 16-3584
+chrM 7369 0 0 0 0 0 0 0 16-3584
+chrM 7370 0 0 0 0 0 0 0 16-3584
+chrM 7371 0 0 0 0 0 0 0 16-3584
+chrM 7372 0 0 0 0 0 0 0 16-3584
+chrM 7373 0 0 0 0 0 0 0 16-3584
+chrM 7374 0 0 0 0 0 0 0 16-3584
+chrM 7375 0 0 0 0 0 0 0 16-3584
+chrM 7376 0 0 0 0 0 0 0 16-3584
+chrM 7377 0 0 0 0 0 0 0 16-3584
+chrM 7378 0 0 0 0 0 0 0 16-3584
+chrM 7379 0 0 0 0 0 0 0 16-3584
+chrM 7380 0 0 0 0 0 0 0 16-3584
+chrM 7381 0 0 0 0 0 0 0 16-3584
+chrM 7382 0 0 0 0 0 0 0 16-3584
+chrM 7383 0 0 0 0 0 0 0 16-3584
+chrM 7384 0 0 0 0 0 0 0 16-3584
+chrM 7385 0 0 0 0 0 0 0 16-3584
+chrM 7386 0 0 0 0 0 0 0 16-3584
+chrM 7387 0 0 0 0 0 0 0 16-3584
+chrM 7388 0 0 0 0 0 0 0 16-3584
+chrM 7389 0 0 0 0 0 0 0 16-3584
+chrM 7390 0 0 0 0 0 0 0 16-3584
+chrM 7391 0 0 0 0 0 0 0 16-3584
+chrM 7392 0 0 0 0 0 0 0 16-3584
+chrM 7393 0 0 0 0 0 0 0 16-3584
+chrM 7394 0 0 0 0 0 0 0 16-3584
+chrM 7395 0 0 0 0 0 0 0 16-3584
+chrM 7396 0 0 0 0 0 0 0 16-3584
+chrM 7397 0 0 0 0 0 0 0 16-3584
+chrM 7398 0 0 0 0 0 0 0 16-3584
+chrM 7399 0 0 0 0 0 0 0 16-3584
+chrM 7400 0 0 0 0 0 0 0 16-3584
+chrM 7401 0 0 0 0 0 0 0 16-3584
+chrM 7402 0 0 0 0 0 0 0 16-3584
+chrM 7403 0 0 0 0 0 0 0 16-3584
+chrM 7404 0 0 0 0 0 0 0 16-3584
+chrM 7405 0 0 0 0 0 0 0 16-3584
+chrM 7406 0 0 0 0 0 0 0 16-3584
+chrM 7407 0 0 0 0 0 0 0 16-3584
+chrM 7408 0 0 0 0 0 0 0 16-3584
+chrM 7409 0 0 0 0 0 0 0 16-3584
+chrM 7410 0 0 0 0 0 0 0 16-3584
+chrM 7411 0 0 0 0 0 0 0 16-3584
+chrM 7412 0 0 0 0 0 0 0 16-3584
+chrM 7413 0 0 0 0 0 0 0 16-3584
+chrM 7414 0 0 0 0 0 0 0 16-3584
+chrM 7415 0 0 0 0 0 0 0 16-3584
+chrM 7416 0 0 0 0 0 0 0 16-3584
+chrM 7417 0 0 0 0 0 0 0 16-3584
+chrM 7418 0 0 0 0 0 0 0 16-3584
+chrM 7419 0 0 0 0 0 0 0 16-3584
+chrM 7420 0 0 0 0 0 0 0 16-3584
+chrM 7421 0 0 0 0 0 0 0 16-3584
+chrM 7422 0 0 0 0 0 0 0 16-3584
+chrM 7423 0 0 0 0 0 0 0 16-3584
+chrM 7424 0 0 0 0 0 0 0 16-3584
+chrM 7425 0 0 0 0 0 0 0 16-3584
+chrM 7426 0 0 0 0 0 0 0 16-3584
+chrM 7427 0 0 0 0 0 0 0 16-3584
+chrM 7428 0 0 0 0 0 0 0 16-3584
+chrM 7429 0 0 0 0 0 0 0 16-3584
+chrM 7430 0 0 0 0 0 0 0 16-3584
+chrM 7431 0 0 0 0 0 0 0 16-3584
+chrM 7432 0 0 0 0 0 0 0 16-3584
+chrM 7433 0 0 0 0 0 0 0 16-3584
+chrM 7434 0 0 0 0 0 0 0 16-3584
+chrM 7435 0 0 0 0 0 0 0 16-3584
+chrM 7436 0 0 0 0 0 0 0 16-3584
+chrM 7437 0 0 0 0 0 0 0 16-3584
+chrM 7438 0 0 0 0 0 0 0 16-3584
+chrM 7439 0 0 0 0 0 0 0 16-3584
+chrM 7440 0 0 0 0 0 0 0 16-3584
+chrM 7441 0 0 0 0 0 0 0 16-3584
+chrM 7442 0 0 0 0 0 0 0 16-3584
+chrM 7443 0 0 0 0 0 0 0 16-3584
+chrM 7444 0 0 0 0 0 0 0 16-3584
+chrM 7445 0 0 0 0 0 0 0 16-3584
+chrM 7446 0 0 0 0 0 0 0 16-3584
+chrM 7447 0 0 0 0 0 0 0 16-3584
+chrM 7448 0 0 0 0 0 0 0 16-3584
+chrM 7449 0 0 0 0 0 0 0 16-3584
+chrM 7450 0 0 0 0 0 0 0 16-3584
+chrM 7451 0 0 0 0 0 0 0 16-3584
+chrM 7452 0 0 0 0 0 0 0 16-3584
+chrM 7453 0 0 0 0 0 0 0 16-3584
+chrM 7454 0 0 0 0 0 0 0 16-3584
+chrM 7455 0 0 0 0 0 0 0 16-3584
+chrM 7456 0 0 0 0 0 0 0 16-3584
+chrM 7457 0 0 0 0 0 0 0 16-3584
+chrM 7458 0 0 0 0 0 0 0 16-3584
+chrM 7459 0 0 0 0 0 0 0 16-3584
+chrM 7460 0 0 0 0 0 0 0 16-3584
+chrM 7461 0 0 0 0 0 0 0 16-3584
+chrM 7462 0 0 0 0 0 0 0 16-3584
+chrM 7463 0 0 0 0 0 0 0 16-3584
+chrM 7464 0 0 0 0 0 0 0 16-3584
+chrM 7465 0 0 0 0 0 0 0 16-3584
+chrM 7466 0 0 0 0 0 0 0 16-3584
+chrM 7467 0 0 0 0 0 0 0 16-3584
+chrM 7468 0 0 0 0 0 0 0 16-3584
+chrM 7469 0 0 0 0 0 0 0 16-3584
+chrM 7470 0 0 0 0 0 0 0 16-3584
+chrM 7471 0 0 0 0 0 0 0 16-3584
+chrM 7472 0 0 0 0 0 0 0 16-3584
+chrM 7473 0 0 0 0 0 0 0 16-3584
+chrM 7474 0 0 0 0 0 0 0 16-3584
+chrM 7475 0 0 0 0 0 0 0 16-3584
+chrM 7476 0 0 0 0 0 0 0 16-3584
+chrM 7477 0 0 0 0 0 0 0 16-3584
+chrM 7478 0 0 0 0 0 0 0 16-3584
+chrM 7479 0 0 0 0 0 0 0 16-3584
+chrM 7480 0 0 0 0 0 0 0 16-3584
+chrM 7481 0 0 0 0 0 0 0 16-3584
+chrM 7482 0 0 0 0 0 0 0 16-3584
+chrM 7483 0 0 0 0 0 0 0 16-3584
+chrM 7484 0 0 0 0 0 0 0 16-3584
+chrM 7485 0 0 0 0 0 0 0 16-3584
+chrM 7486 0 0 0 0 0 0 0 16-3584
+chrM 7487 0 0 0 0 0 0 0 16-3584
+chrM 7488 0 0 0 0 0 0 0 16-3584
+chrM 7489 0 0 0 0 0 0 0 16-3584
+chrM 7490 0 0 0 0 0 0 0 16-3584
+chrM 7491 0 0 0 0 0 0 0 16-3584
+chrM 7492 0 0 0 0 0 0 0 16-3584
+chrM 7493 0 0 0 0 0 0 0 16-3584
+chrM 7494 0 0 0 0 0 0 0 16-3584
+chrM 7495 0 0 0 0 0 0 0 16-3584
+chrM 7496 0 0 0 0 0 0 0 16-3584
+chrM 7497 0 0 0 0 0 0 0 16-3584
+chrM 7498 0 0 0 0 0 0 0 16-3584
+chrM 7499 0 0 0 0 0 0 0 16-3584
+chrM 7500 0 0 0 0 0 0 0 16-3584
+chrM 7501 0 0 0 0 0 0 0 16-3584
+chrM 7502 0 0 0 0 0 0 0 16-3584
+chrM 7503 0 0 0 0 0 0 0 16-3584
+chrM 7504 0 0 0 0 0 0 0 16-3584
+chrM 7505 0 0 0 0 0 0 0 16-3584
+chrM 7506 0 0 0 0 0 0 0 16-3584
+chrM 7507 0 0 0 0 0 0 0 16-3584
+chrM 7508 0 0 0 0 0 0 0 16-3584
+chrM 7509 0 0 0 0 0 0 0 16-3584
+chrM 7510 0 0 0 0 0 0 0 16-3584
+chrM 7511 0 0 0 0 0 0 0 16-3584
+chrM 7512 0 0 0 0 0 0 0 16-3584
+chrM 7513 0 0 0 0 0 0 0 16-3584
+chrM 7514 0 0 0 0 0 0 0 16-3584
+chrM 7515 0 0 0 0 0 0 0 16-3584
+chrM 7516 0 0 0 0 0 0 0 16-3584
+chrM 7517 0 0 0 0 0 0 0 16-3584
+chrM 7518 0 0 0 0 0 0 0 16-3584
+chrM 7519 0 0 0 0 0 0 0 16-3584
+chrM 7520 0 0 0 0 0 0 0 16-3584
+chrM 7521 0 0 0 0 0 0 0 16-3584
+chrM 7522 0 0 0 0 0 0 0 16-3584
+chrM 7523 0 0 0 0 0 0 0 16-3584
+chrM 7524 0 0 0 0 0 0 0 16-3584
+chrM 7525 0 0 0 0 0 0 0 16-3584
+chrM 7526 0 0 0 0 0 0 0 16-3584
+chrM 7527 0 0 0 0 0 0 0 16-3584
+chrM 7528 0 0 0 0 0 0 0 16-3584
+chrM 7529 0 0 0 0 0 0 0 16-3584
+chrM 7530 0 0 0 0 0 0 0 16-3584
+chrM 7531 0 0 0 0 0 0 0 16-3584
+chrM 7532 0 0 0 0 0 0 0 16-3584
+chrM 7533 0 0 0 0 0 0 0 16-3584
+chrM 7534 0 0 0 0 0 0 0 16-3584
+chrM 7535 0 0 0 0 0 0 0 16-3584
+chrM 7536 0 0 0 0 0 0 0 16-3584
+chrM 7537 0 0 0 0 0 0 0 16-3584
+chrM 7538 0 0 0 0 0 0 0 16-3584
+chrM 7539 0 0 0 0 0 0 0 16-3584
+chrM 7540 0 0 0 0 0 0 0 16-3584
+chrM 7541 0 0 0 0 0 0 0 16-3584
+chrM 7542 0 0 0 0 0 0 0 16-3584
+chrM 7543 0 0 0 0 0 0 0 16-3584
+chrM 7544 0 0 0 0 0 0 0 16-3584
+chrM 7545 0 0 0 0 0 0 0 16-3584
+chrM 7546 0 0 0 0 0 0 0 16-3584
+chrM 7547 0 0 0 0 0 0 0 16-3584
+chrM 7548 0 0 0 0 0 0 0 16-3584
+chrM 7549 0 0 0 0 0 0 0 16-3584
+chrM 7550 0 0 0 0 0 0 0 16-3584
+chrM 7551 0 0 0 0 0 0 0 16-3584
+chrM 7552 0 0 0 0 0 0 0 16-3584
+chrM 7553 0 0 0 0 0 0 0 16-3584
+chrM 7554 0 0 0 0 0 0 0 16-3584
+chrM 7555 0 0 0 0 0 0 0 16-3584
+chrM 7556 0 0 0 0 0 0 0 16-3584
+chrM 7557 0 0 0 0 0 0 0 16-3584
+chrM 7558 0 0 0 0 0 0 0 16-3584
+chrM 7559 0 0 0 0 0 0 0 16-3584
+chrM 7560 0 0 0 0 0 0 0 16-3584
+chrM 7561 0 0 0 0 0 0 0 16-3584
+chrM 7562 0 0 0 0 0 0 0 16-3584
+chrM 7563 0 0 0 0 0 0 0 16-3584
+chrM 7564 0 0 0 0 0 0 0 16-3584
+chrM 7565 0 0 0 0 0 0 0 16-3584
+chrM 7566 0 0 0 0 0 0 0 16-3584
+chrM 7567 0 0 0 0 0 0 0 16-3584
+chrM 7568 0 0 0 0 0 0 0 16-3584
+chrM 7569 0 0 0 0 0 0 0 16-3584
+chrM 7570 0 0 0 0 0 0 0 16-3584
+chrM 7571 0 0 0 0 0 0 0 16-3584
+chrM 7572 0 0 0 0 0 0 0 16-3584
+chrM 7573 0 0 0 0 0 0 0 16-3584
+chrM 7574 0 0 0 0 0 0 0 16-3584
+chrM 7575 0 0 0 0 0 0 0 16-3584
+chrM 7576 0 0 0 0 0 0 0 16-3584
+chrM 7577 0 0 0 0 0 0 0 16-3584
+chrM 7578 0 0 0 0 0 0 0 16-3584
+chrM 7579 0 0 0 0 0 0 0 16-3584
+chrM 7580 0 0 0 0 0 0 0 16-3584
+chrM 7581 0 0 0 0 0 0 0 16-3584
+chrM 7582 0 0 0 0 0 0 0 16-3584
+chrM 7583 0 0 0 0 0 0 0 16-3584
+chrM 7584 0 0 0 0 0 0 0 16-3584
+chrM 7585 0 0 0 0 0 0 0 16-3584
+chrM 7586 0 0 0 0 0 0 0 16-3584
+chrM 7587 0 0 0 0 0 0 0 16-3584
+chrM 7588 0 0 0 0 0 0 0 16-3584
+chrM 7589 0 0 0 0 0 0 0 16-3584
+chrM 7590 0 0 0 0 0 0 0 16-3584
+chrM 7591 0 0 0 0 0 0 0 16-3584
+chrM 7592 0 0 0 0 0 0 0 16-3584
+chrM 7593 0 0 0 0 0 0 0 16-3584
+chrM 7594 0 0 0 0 0 0 0 16-3584
+chrM 7595 0 0 0 0 0 0 0 16-3584
+chrM 7596 0 0 0 0 0 0 0 16-3584
+chrM 7597 0 0 0 0 0 0 0 16-3584
+chrM 7598 0 0 0 0 0 0 0 16-3584
+chrM 7599 0 0 0 0 0 0 0 16-3584
+chrM 7600 0 0 0 0 0 0 0 16-3584
+chrM 7601 0 0 0 0 0 0 0 16-3584
+chrM 7602 0 0 0 0 0 0 0 16-3584
+chrM 7603 0 0 0 0 0 0 0 16-3584
+chrM 7604 0 0 0 0 0 0 0 16-3584
+chrM 7605 0 0 0 0 0 0 0 16-3584
+chrM 7606 0 0 0 0 0 0 0 16-3584
+chrM 7607 0 0 0 0 0 0 0 16-3584
+chrM 7608 0 0 0 0 0 0 0 16-3584
+chrM 7609 0 0 0 0 0 0 0 16-3584
+chrM 7610 0 0 0 0 0 0 0 16-3584
+chrM 7611 0 0 0 0 0 0 0 16-3584
+chrM 7612 0 0 0 0 0 0 0 16-3584
+chrM 7613 0 0 0 0 0 0 0 16-3584
+chrM 7614 0 0 0 0 0 0 0 16-3584
+chrM 7615 0 0 0 0 0 0 0 16-3584
+chrM 7616 0 0 0 0 0 0 0 16-3584
+chrM 7617 0 0 0 0 0 0 0 16-3584
+chrM 7618 0 0 0 0 0 0 0 16-3584
+chrM 7619 0 0 0 0 0 0 0 16-3584
+chrM 7620 0 0 0 0 0 0 0 16-3584
+chrM 7621 0 0 0 0 0 0 0 16-3584
+chrM 7622 0 0 0 0 0 0 0 16-3584
+chrM 7623 0 0 0 0 0 0 0 16-3584
+chrM 7624 0 0 0 0 0 0 0 16-3584
+chrM 7625 0 0 0 0 0 0 0 16-3584
+chrM 7626 0 0 0 0 0 0 0 16-3584
+chrM 7627 0 0 0 0 0 0 0 16-3584
+chrM 7628 0 0 0 0 0 0 0 16-3584
+chrM 7629 0 0 0 0 0 0 0 16-3584
+chrM 7630 0 0 0 0 0 0 0 16-3584
+chrM 7631 0 0 0 0 0 0 0 16-3584
+chrM 7632 0 0 0 0 0 0 0 16-3584
+chrM 7633 0 0 0 0 0 0 0 16-3584
+chrM 7634 0 0 0 0 0 0 0 16-3584
+chrM 7635 0 0 0 0 0 0 0 16-3584
+chrM 7636 0 0 0 0 0 0 0 16-3584
+chrM 7637 0 0 0 0 0 0 0 16-3584
+chrM 7638 0 0 0 0 0 0 0 16-3584
+chrM 7639 0 0 0 0 0 0 0 16-3584
+chrM 7640 0 0 0 0 0 0 0 16-3584
+chrM 7641 0 0 0 0 0 0 0 16-3584
+chrM 7642 0 0 0 0 0 0 0 16-3584
+chrM 7643 0 0 0 0 0 0 0 16-3584
+chrM 7644 0 0 0 0 0 0 0 16-3584
+chrM 7645 0 0 0 0 0 0 0 16-3584
+chrM 7646 0 0 0 0 0 0 0 16-3584
+chrM 7647 0 0 0 0 0 0 0 16-3584
+chrM 7648 0 0 0 0 0 0 0 16-3584
+chrM 7649 0 0 0 0 0 0 0 16-3584
+chrM 7650 0 0 0 0 0 0 0 16-3584
+chrM 7651 0 0 0 0 0 0 0 16-3584
+chrM 7652 0 0 0 0 0 0 0 16-3584
+chrM 7653 0 0 0 0 0 0 0 16-3584
+chrM 7654 0 0 0 0 0 0 0 16-3584
+chrM 7655 0 0 0 0 0 0 0 16-3584
+chrM 7656 0 0 0 0 0 0 0 16-3584
+chrM 7657 0 0 0 0 0 0 0 16-3584
+chrM 7658 0 0 0 0 0 0 0 16-3584
+chrM 7659 0 0 0 0 0 0 0 16-3584
+chrM 7660 0 0 0 0 0 0 0 16-3584
+chrM 7661 0 0 0 0 0 0 0 16-3584
+chrM 7662 0 0 0 0 0 0 0 16-3584
+chrM 7663 0 0 0 0 0 0 0 16-3584
+chrM 7664 0 0 0 0 0 0 0 16-3584
+chrM 7665 0 0 0 0 0 0 0 16-3584
+chrM 7666 0 0 0 0 0 0 0 16-3584
+chrM 7667 0 0 0 0 0 0 0 16-3584
+chrM 7668 0 0 0 0 0 0 0 16-3584
+chrM 7669 0 0 0 0 0 0 0 16-3584
+chrM 7670 0 0 0 0 0 0 0 16-3584
+chrM 7671 0 0 0 0 0 0 0 16-3584
+chrM 7672 0 0 0 0 0 0 0 16-3584
+chrM 7673 0 0 0 0 0 0 0 16-3584
+chrM 7674 0 0 0 0 0 0 0 16-3584
+chrM 7675 0 0 0 0 0 0 0 16-3584
+chrM 7676 0 0 0 0 0 0 0 16-3584
+chrM 7677 0 0 0 0 0 0 0 16-3584
+chrM 7678 0 0 0 0 0 0 0 16-3584
+chrM 7679 0 0 0 0 0 0 0 16-3584
+chrM 7680 0 0 0 0 0 0 0 16-3584
+chrM 7681 0 0 0 0 0 0 0 16-3584
+chrM 7682 0 0 0 0 0 0 0 16-3584
+chrM 7683 0 0 0 0 0 0 0 16-3584
+chrM 7684 0 0 0 0 0 0 0 16-3584
+chrM 7685 0 0 0 0 0 0 0 16-3584
+chrM 7686 0 0 0 0 0 0 0 16-3584
+chrM 7687 0 0 0 0 0 0 0 16-3584
+chrM 7688 0 0 0 0 0 0 0 16-3584
+chrM 7689 0 0 0 0 0 0 0 16-3584
+chrM 7690 0 0 0 0 0 0 0 16-3584
+chrM 7691 0 0 0 0 0 0 0 16-3584
+chrM 7692 0 0 0 0 0 0 0 16-3584
+chrM 7693 0 0 0 0 0 0 0 16-3584
+chrM 7694 0 0 0 0 0 0 0 16-3584
+chrM 7695 0 0 0 0 0 0 0 16-3584
+chrM 7696 0 0 0 0 0 0 0 16-3584
+chrM 7697 0 0 0 0 0 0 0 16-3584
+chrM 7698 0 0 0 0 0 0 0 16-3584
+chrM 7699 0 0 0 0 0 0 0 16-3584
+chrM 7700 0 0 0 0 0 0 0 16-3584
+chrM 7701 0 0 0 0 0 0 0 16-3584
+chrM 7702 0 0 0 0 0 0 0 16-3584
+chrM 7703 0 0 0 0 0 0 0 16-3584
+chrM 7704 0 0 0 0 0 0 0 16-3584
+chrM 7705 0 0 0 0 0 0 0 16-3584
+chrM 7706 0 0 0 0 0 0 0 16-3584
+chrM 7707 0 0 0 0 0 0 0 16-3584
+chrM 7708 0 0 0 0 0 0 0 16-3584
+chrM 7709 0 0 0 0 0 0 0 16-3584
+chrM 7710 0 0 0 0 0 0 0 16-3584
+chrM 7711 0 0 0 0 0 0 0 16-3584
+chrM 7712 0 0 0 0 0 0 0 16-3584
+chrM 7713 0 0 0 0 0 0 0 16-3584
+chrM 7714 0 0 0 0 0 0 0 16-3584
+chrM 7715 0 0 0 0 0 0 0 16-3584
+chrM 7716 0 0 0 0 0 0 0 16-3584
+chrM 7717 0 0 0 0 0 0 0 16-3584
+chrM 7718 0 0 0 0 0 0 0 16-3584
+chrM 7719 0 0 0 0 0 0 0 16-3584
+chrM 7720 0 0 0 0 0 0 0 16-3584
+chrM 7721 0 0 0 0 0 0 0 16-3584
+chrM 7722 0 0 0 0 0 0 0 16-3584
+chrM 7723 0 0 0 0 0 0 0 16-3584
+chrM 7724 0 0 0 0 0 0 0 16-3584
+chrM 7725 0 0 0 0 0 0 0 16-3584
+chrM 7726 0 0 0 0 0 0 0 16-3584
+chrM 7727 0 0 0 0 0 0 0 16-3584
+chrM 7728 0 0 0 0 0 0 0 16-3584
+chrM 7729 0 0 0 0 0 0 0 16-3584
+chrM 7730 0 0 0 0 0 0 0 16-3584
+chrM 7731 0 0 0 0 0 0 0 16-3584
+chrM 7732 0 0 0 0 0 0 0 16-3584
+chrM 7733 0 0 0 0 0 0 0 16-3584
+chrM 7734 0 0 0 0 0 0 0 16-3584
+chrM 7735 0 0 0 0 0 0 0 16-3584
+chrM 7736 0 0 0 0 0 0 0 16-3584
+chrM 7737 0 0 0 0 0 0 0 16-3584
+chrM 7738 0 0 0 0 0 0 0 16-3584
+chrM 7739 0 0 0 0 0 0 0 16-3584
+chrM 7740 0 0 0 0 0 0 0 16-3584
+chrM 7741 0 0 0 0 0 0 0 16-3584
+chrM 7742 0 0 0 0 0 0 0 16-3584
+chrM 7743 0 0 0 0 0 0 0 16-3584
+chrM 7744 0 0 0 0 0 0 0 16-3584
+chrM 7745 0 0 0 0 0 0 0 16-3584
+chrM 7746 0 0 0 0 0 0 0 16-3584
+chrM 7747 0 0 0 0 0 0 0 16-3584
+chrM 7748 0 0 0 0 0 0 0 16-3584
+chrM 7749 0 0 0 0 0 0 0 16-3584
+chrM 7750 0 0 0 0 0 0 0 16-3584
+chrM 7751 0 0 0 0 0 0 0 16-3584
+chrM 7752 0 0 0 0 0 0 0 16-3584
+chrM 7753 0 0 0 0 0 0 0 16-3584
+chrM 7754 0 0 0 0 0 0 0 16-3584
+chrM 7755 0 0 0 0 0 0 0 16-3584
+chrM 7756 0 0 0 0 0 0 0 16-3584
+chrM 7757 0 0 0 0 0 0 0 16-3584
+chrM 7758 0 0 0 0 0 0 0 16-3584
+chrM 7759 0 0 0 0 0 0 0 16-3584
+chrM 7760 0 0 0 0 0 0 0 16-3584
+chrM 7761 0 0 0 0 0 0 0 16-3584
+chrM 7762 0 0 0 0 0 0 0 16-3584
+chrM 7763 0 0 0 0 0 0 0 16-3584
+chrM 7764 0 0 0 0 0 0 0 16-3584
+chrM 7765 0 0 0 0 0 0 0 16-3584
+chrM 7766 0 0 0 0 0 0 0 16-3584
+chrM 7767 0 0 0 0 0 0 0 16-3584
+chrM 7768 0 0 0 0 0 0 0 16-3584
+chrM 7769 0 0 0 0 0 0 0 16-3584
+chrM 7770 0 0 0 0 0 0 0 16-3584
+chrM 7771 0 0 0 0 0 0 0 16-3584
+chrM 7772 0 0 0 0 0 0 0 16-3584
+chrM 7773 0 0 0 0 0 0 0 16-3584
+chrM 7774 0 0 0 0 0 0 0 16-3584
+chrM 7775 0 0 0 0 0 0 0 16-3584
+chrM 7776 0 0 0 0 0 0 0 16-3584
+chrM 7777 0 0 0 0 0 0 0 16-3584
+chrM 7778 0 0 0 0 0 0 0 16-3584
+chrM 7779 0 0 0 0 0 0 0 16-3584
+chrM 7780 0 0 0 0 0 0 0 16-3584
+chrM 7781 0 0 0 0 0 0 0 16-3584
+chrM 7782 0 0 0 0 0 0 0 16-3584
+chrM 7783 0 0 0 0 0 0 0 16-3584
+chrM 7784 0 0 0 0 0 0 0 16-3584
+chrM 7785 0 0 0 0 0 0 0 16-3584
+chrM 7786 0 0 0 0 0 0 0 16-3584
+chrM 7787 0 0 0 0 0 0 0 16-3584
+chrM 7788 0 0 0 0 0 0 0 16-3584
+chrM 7789 0 0 0 0 0 0 0 16-3584
+chrM 7790 0 0 0 0 0 0 0 16-3584
+chrM 7791 0 0 0 0 0 0 0 16-3584
+chrM 7792 0 0 0 0 0 0 0 16-3584
+chrM 7793 0 0 0 0 0 0 0 16-3584
+chrM 7794 0 0 0 0 0 0 0 16-3584
+chrM 7795 0 0 0 0 0 0 0 16-3584
+chrM 7796 0 0 0 0 0 0 0 16-3584
+chrM 7797 0 0 0 0 0 0 0 16-3584
+chrM 7798 0 0 0 0 0 0 0 16-3584
+chrM 7799 0 0 0 0 0 0 0 16-3584
+chrM 7800 0 0 0 0 0 0 0 16-3584
+chrM 7801 0 0 0 0 0 0 0 16-3584
+chrM 7802 0 0 0 0 0 0 0 16-3584
+chrM 7803 0 0 0 0 0 0 0 16-3584
+chrM 7804 0 0 0 0 0 0 0 16-3584
+chrM 7805 0 0 0 0 0 0 0 16-3584
+chrM 7806 0 0 0 0 0 0 0 16-3584
+chrM 7807 0 0 0 0 0 0 0 16-3584
+chrM 7808 0 0 0 0 0 0 0 16-3584
+chrM 7809 0 0 0 0 0 0 0 16-3584
+chrM 7810 0 0 0 0 0 0 0 16-3584
+chrM 7811 0 0 0 0 0 0 0 16-3584
+chrM 7812 0 0 0 0 0 0 0 16-3584
+chrM 7813 0 0 0 0 0 0 0 16-3584
+chrM 7814 0 0 0 0 0 0 0 16-3584
+chrM 7815 0 0 0 0 0 0 0 16-3584
+chrM 7816 0 0 0 0 0 0 0 16-3584
+chrM 7817 0 0 0 0 0 0 0 16-3584
+chrM 7818 0 0 0 0 0 0 0 16-3584
+chrM 7819 0 0 0 0 0 0 0 16-3584
+chrM 7820 0 0 0 0 0 0 0 16-3584
+chrM 7821 0 0 0 0 0 0 0 16-3584
+chrM 7822 0 0 0 0 0 0 0 16-3584
+chrM 7823 0 0 0 0 0 0 0 16-3584
+chrM 7824 0 0 0 0 0 0 0 16-3584
+chrM 7825 0 0 0 0 0 0 0 16-3584
+chrM 7826 0 0 0 0 0 0 0 16-3584
+chrM 7827 0 0 0 0 0 0 0 16-3584
+chrM 7828 0 0 0 0 0 0 0 16-3584
+chrM 7829 0 0 0 0 0 0 0 16-3584
+chrM 7830 0 0 0 0 0 0 0 16-3584
+chrM 7831 0 0 0 0 0 0 0 16-3584
+chrM 7832 0 0 0 0 0 0 0 16-3584
+chrM 7833 0 0 0 0 0 0 0 16-3584
+chrM 7834 0 0 0 0 0 0 0 16-3584
+chrM 7835 0 0 0 0 0 0 0 16-3584
+chrM 7836 0 0 0 0 0 0 0 16-3584
+chrM 7837 0 0 0 0 0 0 0 16-3584
+chrM 7838 0 0 0 0 0 0 0 16-3584
+chrM 7839 0 0 0 0 0 0 0 16-3584
+chrM 7840 0 0 0 0 0 0 0 16-3584
+chrM 7841 0 0 0 0 0 0 0 16-3584
+chrM 7842 0 0 0 0 0 0 0 16-3584
+chrM 7843 0 0 0 0 0 0 0 16-3584
+chrM 7844 0 0 0 0 0 0 0 16-3584
+chrM 7845 0 0 0 0 0 0 0 16-3584
+chrM 7846 0 0 0 0 0 0 0 16-3584
+chrM 7847 0 0 0 0 0 0 0 16-3584
+chrM 7848 0 0 0 0 0 0 0 16-3584
+chrM 7849 0 0 0 0 0 0 0 16-3584
+chrM 7850 0 0 0 0 0 0 0 16-3584
+chrM 7851 0 0 0 0 0 0 0 16-3584
+chrM 7852 0 0 0 0 0 0 0 16-3584
+chrM 7853 0 0 0 0 0 0 0 16-3584
+chrM 7854 0 0 0 0 0 0 0 16-3584
+chrM 7855 0 0 0 0 0 0 0 16-3584
+chrM 7856 0 0 0 0 0 0 0 16-3584
+chrM 7857 0 0 0 0 0 0 0 16-3584
+chrM 7858 0 0 0 0 0 0 0 16-3584
+chrM 7859 0 0 0 0 0 0 0 16-3584
+chrM 7860 0 0 0 0 0 0 0 16-3584
+chrM 7861 0 0 0 0 0 0 0 16-3584
+chrM 7862 0 0 0 0 0 0 0 16-3584
+chrM 7863 0 0 0 0 0 0 0 16-3584
+chrM 7864 0 0 0 0 0 0 0 16-3584
+chrM 7865 0 0 0 0 0 0 0 16-3584
+chrM 7866 0 0 0 0 0 0 0 16-3584
+chrM 7867 0 0 0 0 0 0 0 16-3584
+chrM 7868 0 0 0 0 0 0 0 16-3584
+chrM 7869 0 0 0 0 0 0 0 16-3584
+chrM 7870 0 0 0 0 0 0 0 16-3584
+chrM 7871 0 0 0 0 0 0 0 16-3584
+chrM 7872 0 0 0 0 0 0 0 16-3584
+chrM 7873 0 0 0 0 0 0 0 16-3584
+chrM 7874 0 0 0 0 0 0 0 16-3584
+chrM 7875 0 0 0 0 0 0 0 16-3584
+chrM 7876 0 0 0 0 0 0 0 16-3584
+chrM 7877 0 0 0 0 0 0 0 16-3584
+chrM 7878 0 0 0 0 0 0 0 16-3584
+chrM 7879 0 0 0 0 0 0 0 16-3584
+chrM 7880 0 0 0 0 0 0 0 16-3584
+chrM 7881 0 0 0 0 0 0 0 16-3584
+chrM 7882 0 0 0 0 0 0 0 16-3584
+chrM 7883 0 0 0 0 0 0 0 16-3584
+chrM 7884 0 0 0 0 0 0 0 16-3584
+chrM 7885 0 0 0 0 0 0 0 16-3584
+chrM 7886 0 0 0 0 0 0 0 16-3584
+chrM 7887 0 0 0 0 0 0 0 16-3584
+chrM 7888 0 0 0 0 0 0 0 16-3584
+chrM 7889 0 0 0 0 0 0 0 16-3584
+chrM 7890 0 0 0 0 0 0 0 16-3584
+chrM 7891 0 0 0 0 0 0 0 16-3584
+chrM 7892 0 0 0 0 0 0 0 16-3584
+chrM 7893 0 0 0 0 0 0 0 16-3584
+chrM 7894 0 0 0 0 0 0 0 16-3584
+chrM 7895 0 0 0 0 0 0 0 16-3584
+chrM 7896 0 0 0 0 0 0 0 16-3584
+chrM 7897 0 0 0 0 0 0 0 16-3584
+chrM 7898 0 0 0 0 0 0 0 16-3584
+chrM 7899 0 0 0 0 0 0 0 16-3584
+chrM 7900 0 0 0 0 0 0 0 16-3584
+chrM 7901 0 0 0 0 0 0 0 16-3584
+chrM 7902 0 0 0 0 0 0 0 16-3584
+chrM 7903 0 0 0 0 0 0 0 16-3584
+chrM 7904 0 0 0 0 0 0 0 16-3584
+chrM 7905 0 0 0 0 0 0 0 16-3584
+chrM 7906 0 0 0 0 0 0 0 16-3584
+chrM 7907 0 0 0 0 0 0 0 16-3584
+chrM 7908 0 0 0 0 0 0 0 16-3584
+chrM 7909 0 0 0 0 0 0 0 16-3584
+chrM 7910 0 0 0 0 0 0 0 16-3584
+chrM 7911 0 0 0 0 0 0 0 16-3584
+chrM 7912 0 0 0 0 0 0 0 16-3584
+chrM 7913 0 0 0 0 0 0 0 16-3584
+chrM 7914 0 0 0 0 0 0 0 16-3584
+chrM 7915 0 0 0 0 0 0 0 16-3584
+chrM 7916 0 0 0 0 0 0 0 16-3584
+chrM 7917 0 0 0 0 0 0 0 16-3584
+chrM 7918 0 0 0 0 0 0 0 16-3584
+chrM 7919 0 0 0 0 0 0 0 16-3584
+chrM 7920 0 0 0 0 0 0 0 16-3584
+chrM 7921 0 0 0 0 0 0 0 16-3584
+chrM 7922 0 0 0 0 0 0 0 16-3584
+chrM 7923 0 0 0 0 0 0 0 16-3584
+chrM 7924 0 0 0 0 0 0 0 16-3584
+chrM 7925 0 0 0 0 0 0 0 16-3584
+chrM 7926 0 0 0 0 0 0 0 16-3584
+chrM 7927 0 0 0 0 0 0 0 16-3584
+chrM 7928 0 0 0 0 0 0 0 16-3584
+chrM 7929 0 0 0 0 0 0 0 16-3584
+chrM 7930 0 0 0 0 0 0 0 16-3584
+chrM 7931 0 0 0 0 0 0 0 16-3584
+chrM 7932 0 0 0 0 0 0 0 16-3584
+chrM 7933 0 0 0 0 0 0 0 16-3584
+chrM 7934 0 0 0 0 0 0 0 16-3584
+chrM 7935 0 0 0 0 0 0 0 16-3584
+chrM 7936 0 0 0 0 0 0 0 16-3584
+chrM 7937 0 0 0 0 0 0 0 16-3584
+chrM 7938 0 0 0 0 0 0 0 16-3584
+chrM 7939 0 0 0 0 0 0 0 16-3584
+chrM 7940 0 0 0 0 0 0 0 16-3584
+chrM 7941 0 0 0 0 0 0 0 16-3584
+chrM 7942 0 0 0 0 0 0 0 16-3584
+chrM 7943 0 0 0 0 0 0 0 16-3584
+chrM 7944 0 0 0 0 0 0 0 16-3584
+chrM 7945 0 0 0 0 0 0 0 16-3584
+chrM 7946 0 0 0 0 0 0 0 16-3584
+chrM 7947 0 0 0 0 0 0 0 16-3584
+chrM 7948 0 0 0 0 0 0 0 16-3584
+chrM 7949 0 0 0 0 0 0 0 16-3584
+chrM 7950 0 0 0 0 0 0 0 16-3584
+chrM 7951 0 0 0 0 0 0 0 16-3584
+chrM 7952 0 0 0 0 0 0 0 16-3584
+chrM 7953 0 0 0 0 0 0 0 16-3584
+chrM 7954 0 0 0 0 0 0 0 16-3584
+chrM 7955 0 0 0 0 0 0 0 16-3584
+chrM 7956 0 0 0 0 0 0 0 16-3584
+chrM 7957 0 0 0 0 0 0 0 16-3584
+chrM 7958 0 0 0 0 0 0 0 16-3584
+chrM 7959 0 0 0 0 0 0 0 16-3584
+chrM 7960 0 0 0 0 0 0 0 16-3584
+chrM 7961 0 0 0 0 0 0 0 16-3584
+chrM 7962 0 0 0 0 0 0 0 16-3584
+chrM 7963 0 0 0 0 0 0 0 16-3584
+chrM 7964 0 0 0 0 0 0 0 16-3584
+chrM 7965 0 0 0 0 0 0 0 16-3584
+chrM 7966 0 0 0 0 0 0 0 16-3584
+chrM 7967 0 0 0 0 0 0 0 16-3584
+chrM 7968 0 0 0 0 0 0 0 16-3584
+chrM 7969 0 0 0 0 0 0 0 16-3584
+chrM 7970 0 0 0 0 0 0 0 16-3584
+chrM 7971 0 0 0 0 0 0 0 16-3584
+chrM 7972 0 0 0 0 0 0 0 16-3584
+chrM 7973 0 0 0 0 0 0 0 16-3584
+chrM 7974 0 0 0 0 0 0 0 16-3584
+chrM 7975 0 0 0 0 0 0 0 16-3584
+chrM 7976 0 0 0 0 0 0 0 16-3584
+chrM 7977 0 0 0 0 0 0 0 16-3584
+chrM 7978 0 0 0 0 0 0 0 16-3584
+chrM 7979 0 0 0 0 0 0 0 16-3584
+chrM 7980 0 0 0 0 0 0 0 16-3584
+chrM 7981 0 0 0 0 0 0 0 16-3584
+chrM 7982 0 0 0 0 0 0 0 16-3584
+chrM 7983 0 0 0 0 0 0 0 16-3584
+chrM 7984 0 0 0 0 0 0 0 16-3584
+chrM 7985 0 0 0 0 0 0 0 16-3584
+chrM 7986 0 0 0 0 0 0 0 16-3584
+chrM 7987 0 0 0 0 0 0 0 16-3584
+chrM 7988 0 0 0 0 0 0 0 16-3584
+chrM 7989 0 0 0 0 0 0 0 16-3584
+chrM 7990 0 0 0 0 0 0 0 16-3584
+chrM 7991 0 0 0 0 0 0 0 16-3584
+chrM 7992 0 0 0 0 0 0 0 16-3584
+chrM 7993 0 0 0 0 0 0 0 16-3584
+chrM 7994 0 0 0 0 0 0 0 16-3584
+chrM 7995 0 0 0 0 0 0 0 16-3584
+chrM 7996 0 0 0 0 0 0 0 16-3584
+chrM 7997 0 0 0 0 0 0 0 16-3584
+chrM 7998 0 0 0 0 0 0 0 16-3584
+chrM 7999 0 0 0 0 0 0 0 16-3584
+chrM 8000 0 0 0 0 0 0 0 16-3584
+chrM 8001 0 0 0 0 0 0 0 16-3584
+chrM 8002 0 0 0 0 0 0 0 16-3584
+chrM 8003 0 0 0 0 0 0 0 16-3584
+chrM 8004 0 0 0 0 0 0 0 16-3584
+chrM 8005 0 0 0 0 0 0 0 16-3584
+chrM 8006 0 0 0 0 0 0 0 16-3584
+chrM 8007 0 0 0 0 0 0 0 16-3584
+chrM 8008 0 0 0 0 0 0 0 16-3584
+chrM 8009 0 0 0 0 0 0 0 16-3584
+chrM 8010 0 0 0 0 0 0 0 16-3584
+chrM 8011 0 0 0 0 0 0 0 16-3584
+chrM 8012 0 0 0 0 0 0 0 16-3584
+chrM 8013 0 0 0 0 0 0 0 16-3584
+chrM 8014 0 0 0 0 0 0 0 16-3584
+chrM 8015 0 0 0 0 0 0 0 16-3584
+chrM 8016 0 0 0 0 0 0 0 16-3584
+chrM 8017 0 0 0 0 0 0 0 16-3584
+chrM 8018 0 0 0 0 0 0 0 16-3584
+chrM 8019 0 0 0 0 0 0 0 16-3584
+chrM 8020 0 0 0 0 0 0 0 16-3584
+chrM 8021 0 0 0 0 0 0 0 16-3584
+chrM 8022 0 0 0 0 0 0 0 16-3584
+chrM 8023 0 0 0 0 0 0 0 16-3584
+chrM 8024 0 0 0 0 0 0 0 16-3584
+chrM 8025 0 0 0 0 0 0 0 16-3584
+chrM 8026 0 0 0 0 0 0 0 16-3584
+chrM 8027 0 0 0 0 0 0 0 16-3584
+chrM 8028 0 0 0 0 0 0 0 16-3584
+chrM 8029 0 0 0 0 0 0 0 16-3584
+chrM 8030 0 0 0 0 0 0 0 16-3584
+chrM 8031 0 0 0 0 0 0 0 16-3584
+chrM 8032 0 0 0 0 0 0 0 16-3584
+chrM 8033 0 0 0 0 0 0 0 16-3584
+chrM 8034 0 0 0 0 0 0 0 16-3584
+chrM 8035 0 0 0 0 0 0 0 16-3584
+chrM 8036 0 0 0 0 0 0 0 16-3584
+chrM 8037 0 0 0 0 0 0 0 16-3584
+chrM 8038 0 0 0 0 0 0 0 16-3584
+chrM 8039 0 0 0 0 0 0 0 16-3584
+chrM 8040 0 0 0 0 0 0 0 16-3584
+chrM 8041 0 0 0 0 0 0 0 16-3584
+chrM 8042 0 0 0 0 0 0 0 16-3584
+chrM 8043 0 0 0 0 0 0 0 16-3584
+chrM 8044 0 0 0 0 0 0 0 16-3584
+chrM 8045 0 0 0 0 0 0 0 16-3584
+chrM 8046 0 0 0 0 0 0 0 16-3584
+chrM 8047 0 0 0 0 0 0 0 16-3584
+chrM 8048 0 0 0 0 0 0 0 16-3584
+chrM 8049 0 0 0 0 0 0 0 16-3584
+chrM 8050 0 0 0 0 0 0 0 16-3584
+chrM 8051 0 0 0 0 0 0 0 16-3584
+chrM 8052 0 0 0 0 0 0 0 16-3584
+chrM 8053 0 0 0 0 0 0 0 16-3584
+chrM 8054 0 0 0 0 0 0 0 16-3584
+chrM 8055 0 0 0 0 0 0 0 16-3584
+chrM 8056 0 0 0 0 0 0 0 16-3584
+chrM 8057 0 0 0 0 0 0 0 16-3584
+chrM 8058 0 0 0 0 0 0 0 16-3584
+chrM 8059 0 0 0 0 0 0 0 16-3584
+chrM 8060 0 0 0 0 0 0 0 16-3584
+chrM 8061 0 0 0 0 0 0 0 16-3584
+chrM 8062 0 0 0 0 0 0 0 16-3584
+chrM 8063 0 0 0 0 0 0 0 16-3584
+chrM 8064 0 0 0 0 0 0 0 16-3584
+chrM 8065 0 0 0 0 0 0 0 16-3584
+chrM 8066 0 0 0 0 0 0 0 16-3584
+chrM 8067 0 0 0 0 0 0 0 16-3584
+chrM 8068 0 0 0 0 0 0 0 16-3584
+chrM 8069 0 0 0 0 0 0 0 16-3584
+chrM 8070 0 0 0 0 0 0 0 16-3584
+chrM 8071 0 0 0 0 0 0 0 16-3584
+chrM 8072 0 0 0 0 0 0 0 16-3584
+chrM 8073 0 0 0 0 0 0 0 16-3584
+chrM 8074 0 0 0 0 0 0 0 16-3584
+chrM 8075 0 0 0 0 0 0 0 16-3584
+chrM 8076 0 0 0 0 0 0 0 16-3584
+chrM 8077 0 0 0 0 0 0 0 16-3584
+chrM 8078 0 0 0 0 0 0 0 16-3584
+chrM 8079 0 0 0 0 0 0 0 16-3584
+chrM 8080 0 0 0 0 0 0 0 16-3584
+chrM 8081 0 0 0 0 0 0 0 16-3584
+chrM 8082 0 0 0 0 0 0 0 16-3584
+chrM 8083 0 0 0 0 0 0 0 16-3584
+chrM 8084 0 0 0 0 0 0 0 16-3584
+chrM 8085 0 0 0 0 0 0 0 16-3584
+chrM 8086 0 0 0 0 0 0 0 16-3584
+chrM 8087 0 0 0 0 0 0 0 16-3584
+chrM 8088 0 0 0 0 0 0 0 16-3584
+chrM 8089 0 0 0 0 0 0 0 16-3584
+chrM 8090 0 0 0 0 0 0 0 16-3584
+chrM 8091 0 0 0 0 0 0 0 16-3584
+chrM 8092 0 0 0 0 0 0 0 16-3584
+chrM 8093 0 0 0 0 0 0 0 16-3584
+chrM 8094 0 0 0 0 0 0 0 16-3584
+chrM 8095 0 0 0 0 0 0 0 16-3584
+chrM 8096 0 0 0 0 0 0 0 16-3584
+chrM 8097 0 0 0 0 0 0 0 16-3584
+chrM 8098 0 0 0 0 0 0 0 16-3584
+chrM 8099 0 0 0 0 0 0 0 16-3584
+chrM 8100 0 0 0 0 0 0 0 16-3584
+chrM 8101 0 0 0 0 0 0 0 16-3584
+chrM 8102 0 0 0 0 0 0 0 16-3584
+chrM 8103 0 0 0 0 0 0 0 16-3584
+chrM 8104 0 0 0 0 0 0 0 16-3584
+chrM 8105 0 0 0 0 0 0 0 16-3584
+chrM 8106 0 0 0 0 0 0 0 16-3584
+chrM 8107 0 0 0 0 0 0 0 16-3584
+chrM 8108 0 0 0 0 0 0 0 16-3584
+chrM 8109 0 0 0 0 0 0 0 16-3584
+chrM 8110 0 0 0 0 0 0 0 16-3584
+chrM 8111 0 0 0 0 0 0 0 16-3584
+chrM 8112 0 0 0 0 0 0 0 16-3584
+chrM 8113 0 0 0 0 0 0 0 16-3584
+chrM 8114 0 0 0 0 0 0 0 16-3584
+chrM 8115 0 0 0 0 0 0 0 16-3584
+chrM 8116 0 0 0 0 0 0 0 16-3584
+chrM 8117 0 0 0 0 0 0 0 16-3584
+chrM 8118 0 0 0 0 0 0 0 16-3584
+chrM 8119 0 0 0 0 0 0 0 16-3584
+chrM 8120 0 0 0 0 0 0 0 16-3584
+chrM 8121 0 0 0 0 0 0 0 16-3584
+chrM 8122 0 0 0 0 0 0 0 16-3584
+chrM 8123 0 0 0 0 0 0 0 16-3584
+chrM 8124 0 0 0 0 0 0 0 16-3584
+chrM 8125 0 0 0 0 0 0 0 16-3584
+chrM 8126 0 0 0 0 0 0 0 16-3584
+chrM 8127 0 0 0 0 0 0 0 16-3584
+chrM 8128 0 0 0 0 0 0 0 16-3584
+chrM 8129 0 0 0 0 0 0 0 16-3584
+chrM 8130 0 0 0 0 0 0 0 16-3584
+chrM 8131 0 0 0 0 0 0 0 16-3584
+chrM 8132 0 0 0 0 0 0 0 16-3584
+chrM 8133 0 0 0 0 0 0 0 16-3584
+chrM 8134 0 0 0 0 0 0 0 16-3584
+chrM 8135 0 0 0 0 0 0 0 16-3584
+chrM 8136 0 0 0 0 0 0 0 16-3584
+chrM 8137 0 0 0 0 0 0 0 16-3584
+chrM 8138 0 0 0 0 0 0 0 16-3584
+chrM 8139 0 0 0 0 0 0 0 16-3584
+chrM 8140 0 0 0 0 0 0 0 16-3584
+chrM 8141 0 0 0 0 0 0 0 16-3584
+chrM 8142 0 0 0 0 0 0 0 16-3584
+chrM 8143 0 0 0 0 0 0 0 16-3584
+chrM 8144 0 0 0 0 0 0 0 16-3584
+chrM 8145 0 0 0 0 0 0 0 16-3584
+chrM 8146 0 0 0 0 0 0 0 16-3584
+chrM 8147 0 0 0 0 0 0 0 16-3584
+chrM 8148 0 0 0 0 0 0 0 16-3584
+chrM 8149 0 0 0 0 0 0 0 16-3584
+chrM 8150 0 0 0 0 0 0 0 16-3584
+chrM 8151 0 0 0 0 0 0 0 16-3584
+chrM 8152 0 0 0 0 0 0 0 16-3584
+chrM 8153 0 0 0 0 0 0 0 16-3584
+chrM 8154 0 0 0 0 0 0 0 16-3584
+chrM 8155 0 0 0 0 0 0 0 16-3584
+chrM 8156 0 0 0 0 0 0 0 16-3584
+chrM 8157 0 0 0 0 0 0 0 16-3584
+chrM 8158 0 0 0 0 0 0 0 16-3584
+chrM 8159 0 0 0 0 0 0 0 16-3584
+chrM 8160 0 0 0 0 0 0 0 16-3584
+chrM 8161 0 0 0 0 0 0 0 16-3584
+chrM 8162 0 0 0 0 0 0 0 16-3584
+chrM 8163 0 0 0 0 0 0 0 16-3584
+chrM 8164 0 0 0 0 0 0 0 16-3584
+chrM 8165 0 0 0 0 0 0 0 16-3584
+chrM 8166 0 0 0 0 0 0 0 16-3584
+chrM 8167 0 0 0 0 0 0 0 16-3584
+chrM 8168 0 0 0 0 0 0 0 16-3584
+chrM 8169 0 0 0 0 0 0 0 16-3584
+chrM 8170 0 0 0 0 0 0 0 16-3584
+chrM 8171 0 0 0 0 0 0 0 16-3584
+chrM 8172 0 0 0 0 0 0 0 16-3584
+chrM 8173 0 0 0 0 0 0 0 16-3584
+chrM 8174 0 0 0 0 0 0 0 16-3584
+chrM 8175 0 0 0 0 0 0 0 16-3584
+chrM 8176 0 0 0 0 0 0 0 16-3584
+chrM 8177 0 0 0 0 0 0 0 16-3584
+chrM 8178 0 0 0 0 0 0 0 16-3584
+chrM 8179 0 0 0 0 0 0 0 16-3584
+chrM 8180 0 0 0 0 0 0 0 16-3584
+chrM 8181 0 0 0 0 0 0 0 16-3584
+chrM 8182 0 0 0 0 0 0 0 16-3584
+chrM 8183 0 0 0 0 0 0 0 16-3584
+chrM 8184 0 0 0 0 0 0 0 16-3584
+chrM 8185 0 0 0 0 0 0 0 16-3584
+chrM 8186 0 0 0 0 0 0 0 16-3584
+chrM 8187 0 0 0 0 0 0 0 16-3584
+chrM 8188 0 0 0 0 0 0 0 16-3584
+chrM 8189 0 0 0 0 0 0 0 16-3584
+chrM 8190 0 0 0 0 0 0 0 16-3584
+chrM 8191 0 0 0 0 0 0 0 16-3584
+chrM 8192 0 0 0 0 0 0 0 16-3584
+chrM 8193 0 0 0 0 0 0 0 16-3584
+chrM 8194 0 0 0 0 0 0 0 16-3584
+chrM 8195 0 0 0 0 0 0 0 16-3584
+chrM 8196 0 0 0 0 0 0 0 16-3584
+chrM 8197 0 0 0 0 0 0 0 16-3584
+chrM 8198 0 0 0 0 0 0 0 16-3584
+chrM 8199 0 0 0 0 0 0 0 16-3584
+chrM 8200 0 0 0 0 0 0 0 16-3584
+chrM 8201 0 0 0 0 0 0 0 16-3584
+chrM 8202 0 0 0 0 0 0 0 16-3584
+chrM 8203 0 0 0 0 0 0 0 16-3584
+chrM 8204 0 0 0 0 0 0 0 16-3584
+chrM 8205 0 0 0 0 0 0 0 16-3584
+chrM 8206 0 0 0 0 0 0 0 16-3584
+chrM 8207 0 0 0 0 0 0 0 16-3584
+chrM 8208 0 0 0 0 0 0 0 16-3584
+chrM 8209 0 0 0 0 0 0 0 16-3584
+chrM 8210 0 0 0 0 0 0 0 16-3584
+chrM 8211 0 0 0 0 0 0 0 16-3584
+chrM 8212 0 0 0 0 0 0 0 16-3584
+chrM 8213 0 0 0 0 0 0 0 16-3584
+chrM 8214 0 0 0 0 0 0 0 16-3584
+chrM 8215 0 0 0 0 0 0 0 16-3584
+chrM 8216 0 0 0 0 0 0 0 16-3584
+chrM 8217 0 0 0 0 0 0 0 16-3584
+chrM 8218 0 0 0 0 0 0 0 16-3584
+chrM 8219 0 0 0 0 0 0 0 16-3584
+chrM 8220 0 0 0 0 0 0 0 16-3584
+chrM 8221 0 0 0 0 0 0 0 16-3584
+chrM 8222 0 0 0 0 0 0 0 16-3584
+chrM 8223 0 0 0 0 0 0 0 16-3584
+chrM 8224 0 0 0 0 0 0 0 16-3584
+chrM 8225 0 0 0 0 0 0 0 16-3584
+chrM 8226 0 0 0 0 0 0 0 16-3584
+chrM 8227 0 0 0 0 0 0 0 16-3584
+chrM 8228 0 0 0 0 0 0 0 16-3584
+chrM 8229 0 0 0 0 0 0 0 16-3584
+chrM 8230 0 0 0 0 0 0 0 16-3584
+chrM 8231 0 0 0 0 0 0 0 16-3584
+chrM 8232 0 0 0 0 0 0 0 16-3584
+chrM 8233 0 0 0 0 0 0 0 16-3584
+chrM 8234 0 0 0 0 0 0 0 16-3584
+chrM 8235 0 0 0 0 0 0 0 16-3584
+chrM 8236 0 0 0 0 0 0 0 16-3584
+chrM 8237 0 0 0 0 0 0 0 16-3584
+chrM 8238 0 0 0 0 0 0 0 16-3584
+chrM 8239 0 0 0 0 0 0 0 16-3584
+chrM 8240 0 0 0 0 0 0 0 16-3584
+chrM 8241 0 0 0 0 0 0 0 16-3584
+chrM 8242 0 0 0 0 0 0 0 16-3584
+chrM 8243 0 0 0 0 0 0 0 16-3584
+chrM 8244 0 0 0 0 0 0 0 16-3584
+chrM 8245 0 0 0 0 0 0 0 16-3584
+chrM 8246 0 0 0 0 0 0 0 16-3584
+chrM 8247 0 0 0 0 0 0 0 16-3584
+chrM 8248 0 0 0 0 0 0 0 16-3584
+chrM 8249 0 0 0 0 0 0 0 16-3584
+chrM 8250 0 0 0 0 0 0 0 16-3584
+chrM 8251 0 0 0 0 0 0 0 16-3584
+chrM 8252 0 0 0 0 0 0 0 16-3584
+chrM 8253 0 0 0 0 0 0 0 16-3584
+chrM 8254 0 0 0 0 0 0 0 16-3584
+chrM 8255 0 0 0 0 0 0 0 16-3584
+chrM 8256 0 0 0 0 0 0 0 16-3584
+chrM 8257 0 0 0 0 0 0 0 16-3584
+chrM 8258 0 0 0 0 0 0 0 16-3584
+chrM 8259 0 0 0 0 0 0 0 16-3584
+chrM 8260 0 0 0 0 0 0 0 16-3584
+chrM 8261 0 0 0 0 0 0 0 16-3584
+chrM 8262 0 0 0 0 0 0 0 16-3584
+chrM 8263 0 0 0 0 0 0 0 16-3584
+chrM 8264 0 0 0 0 0 0 0 16-3584
+chrM 8265 0 0 0 0 0 0 0 16-3584
+chrM 8266 0 0 0 0 0 0 0 16-3584
+chrM 8267 0 0 0 0 0 0 0 16-3584
+chrM 8268 0 0 0 0 0 0 0 16-3584
+chrM 8269 0 0 0 0 0 0 0 16-3584
+chrM 8270 0 0 0 0 0 0 0 16-3584
+chrM 8271 0 0 0 0 0 0 0 16-3584
+chrM 8272 0 0 0 0 0 0 0 16-3584
+chrM 8273 0 0 0 0 0 0 0 16-3584
+chrM 8274 0 0 0 0 0 0 0 16-3584
+chrM 8275 0 0 0 0 0 0 0 16-3584
+chrM 8276 0 0 0 0 0 0 0 16-3584
+chrM 8277 0 0 0 0 0 0 0 16-3584
+chrM 8278 0 0 0 0 0 0 0 16-3584
+chrM 8279 0 0 0 0 0 0 0 16-3584
+chrM 8280 0 0 0 0 0 0 0 16-3584
+chrM 8281 0 0 0 0 0 0 0 16-3584
+chrM 8282 0 0 0 0 0 0 0 16-3584
+chrM 8283 0 0 0 0 0 0 0 16-3584
+chrM 8284 0 0 0 0 0 0 0 16-3584
+chrM 8285 0 0 0 0 0 0 0 16-3584
+chrM 8286 0 0 0 0 0 0 0 16-3584
+chrM 8287 0 0 0 0 0 0 0 16-3584
+chrM 8288 0 0 0 0 0 0 0 16-3584
+chrM 8289 0 0 0 0 0 0 0 16-3584
+chrM 8290 0 0 0 0 0 0 0 16-3584
+chrM 8291 0 0 0 0 0 0 0 16-3584
+chrM 8292 0 0 0 0 0 0 0 16-3584
+chrM 8293 0 0 0 0 0 0 0 16-3584
+chrM 8294 0 0 0 0 0 0 0 16-3584
+chrM 8295 0 0 0 0 0 0 0 16-3584
+chrM 8296 0 0 0 0 0 0 0 16-3584
+chrM 8297 0 0 0 0 0 0 0 16-3584
+chrM 8298 0 0 0 0 0 0 0 16-3584
+chrM 8299 0 0 0 0 0 0 0 16-3584
+chrM 8300 0 0 0 0 0 0 0 16-3584
+chrM 8301 0 0 0 0 0 0 0 16-3584
+chrM 8302 0 0 0 0 0 0 0 16-3584
+chrM 8303 0 0 0 0 0 0 0 16-3584
+chrM 8304 0 0 0 0 0 0 0 16-3584
+chrM 8305 0 0 0 0 0 0 0 16-3584
+chrM 8306 0 0 0 0 0 0 0 16-3584
+chrM 8307 0 0 0 0 0 0 0 16-3584
+chrM 8308 0 0 0 0 0 0 0 16-3584
+chrM 8309 0 0 0 0 0 0 0 16-3584
+chrM 8310 0 0 0 0 0 0 0 16-3584
+chrM 8311 0 0 0 0 0 0 0 16-3584
+chrM 8312 0 0 0 0 0 0 0 16-3584
+chrM 8313 0 0 0 0 0 0 0 16-3584
+chrM 8314 0 0 0 0 0 0 0 16-3584
+chrM 8315 0 0 0 0 0 0 0 16-3584
+chrM 8316 0 0 0 0 0 0 0 16-3584
+chrM 8317 0 0 0 0 0 0 0 16-3584
+chrM 8318 0 0 0 0 0 0 0 16-3584
+chrM 8319 0 0 0 0 0 0 0 16-3584
+chrM 8320 0 0 0 0 0 0 0 16-3584
+chrM 8321 0 0 0 0 0 0 0 16-3584
+chrM 8322 0 0 0 0 0 0 0 16-3584
+chrM 8323 0 0 0 0 0 0 0 16-3584
+chrM 8324 0 0 0 0 0 0 0 16-3584
+chrM 8325 0 0 0 0 0 0 0 16-3584
+chrM 8326 0 0 0 0 0 0 0 16-3584
+chrM 8327 0 0 0 0 0 0 0 16-3584
+chrM 8328 0 0 0 0 0 0 0 16-3584
+chrM 8329 0 0 0 0 0 0 0 16-3584
+chrM 8330 0 0 0 0 0 0 0 16-3584
+chrM 8331 0 0 0 0 0 0 0 16-3584
+chrM 8332 0 0 0 0 0 0 0 16-3584
+chrM 8333 0 0 0 0 0 0 0 16-3584
+chrM 8334 0 0 0 0 0 0 0 16-3584
+chrM 8335 0 0 0 0 0 0 0 16-3584
+chrM 8336 0 0 0 0 0 0 0 16-3584
+chrM 8337 0 0 0 0 0 0 0 16-3584
+chrM 8338 0 0 0 0 0 0 0 16-3584
+chrM 8339 0 0 0 0 0 0 0 16-3584
+chrM 8340 0 0 0 0 0 0 0 16-3584
+chrM 8341 0 0 0 0 0 0 0 16-3584
+chrM 8342 0 0 0 0 0 0 0 16-3584
+chrM 8343 0 0 0 0 0 0 0 16-3584
+chrM 8344 0 0 0 0 0 0 0 16-3584
+chrM 8345 0 0 0 0 0 0 0 16-3584
+chrM 8346 0 0 0 0 0 0 0 16-3584
+chrM 8347 0 0 0 0 0 0 0 16-3584
+chrM 8348 0 0 0 0 0 0 0 16-3584
+chrM 8349 0 0 0 0 0 0 0 16-3584
+chrM 8350 0 0 0 0 0 0 0 16-3584
+chrM 8351 0 0 0 0 0 0 0 16-3584
+chrM 8352 0 0 0 0 0 0 0 16-3584
+chrM 8353 0 0 0 0 0 0 0 16-3584
+chrM 8354 0 0 0 0 0 0 0 16-3584
+chrM 8355 0 0 0 0 0 0 0 16-3584
+chrM 8356 0 0 0 0 0 0 0 16-3584
+chrM 8357 0 0 0 0 0 0 0 16-3584
+chrM 8358 0 0 0 0 0 0 0 16-3584
+chrM 8359 0 0 0 0 0 0 0 16-3584
+chrM 8360 0 0 0 0 0 0 0 16-3584
+chrM 8361 0 0 0 0 0 0 0 16-3584
+chrM 8362 0 0 0 0 0 0 0 16-3584
+chrM 8363 0 0 0 0 0 0 0 16-3584
+chrM 8364 0 0 0 0 0 0 0 16-3584
+chrM 8365 0 0 0 0 0 0 0 16-3584
+chrM 8366 0 0 0 0 0 0 0 16-3584
+chrM 8367 0 0 0 0 0 0 0 16-3584
+chrM 8368 0 0 0 0 0 0 0 16-3584
+chrM 8369 0 0 0 0 0 0 0 16-3584
+chrM 8370 0 0 0 0 0 0 0 16-3584
+chrM 8371 0 0 0 0 0 0 0 16-3584
+chrM 8372 0 0 0 0 0 0 0 16-3584
+chrM 8373 0 0 0 0 0 0 0 16-3584
+chrM 8374 0 0 0 0 0 0 0 16-3584
+chrM 8375 0 0 0 0 0 0 0 16-3584
+chrM 8376 0 0 0 0 0 0 0 16-3584
+chrM 8377 0 0 0 0 0 0 0 16-3584
+chrM 8378 0 0 0 0 0 0 0 16-3584
+chrM 8379 0 0 0 0 0 0 0 16-3584
+chrM 8380 0 0 0 0 0 0 0 16-3584
+chrM 8381 0 0 0 0 0 0 0 16-3584
+chrM 8382 0 0 0 0 0 0 0 16-3584
+chrM 8383 0 0 0 0 0 0 0 16-3584
+chrM 8384 0 0 0 0 0 0 0 16-3584
+chrM 8385 0 0 0 0 0 0 0 16-3584
+chrM 8386 0 0 0 0 0 0 0 16-3584
+chrM 8387 0 0 0 0 0 0 0 16-3584
+chrM 8388 0 0 0 0 0 0 0 16-3584
+chrM 8389 0 0 0 0 0 0 0 16-3584
+chrM 8390 0 0 0 0 0 0 0 16-3584
+chrM 8391 0 0 0 0 0 0 0 16-3584
+chrM 8392 0 0 0 0 0 0 0 16-3584
+chrM 8393 0 0 0 0 0 0 0 16-3584
+chrM 8394 0 0 0 0 0 0 0 16-3584
+chrM 8395 0 0 0 0 0 0 0 16-3584
+chrM 8396 0 0 0 0 0 0 0 16-3584
+chrM 8397 0 0 0 0 0 0 0 16-3584
+chrM 8398 0 0 0 0 0 0 0 16-3584
+chrM 8399 0 0 0 0 0 0 0 16-3584
+chrM 8400 0 0 0 0 0 0 0 16-3584
+chrM 8401 0 0 0 0 0 0 0 16-3584
+chrM 8402 0 0 0 0 0 0 0 16-3584
+chrM 8403 0 0 0 0 0 0 0 16-3584
+chrM 8404 0 0 0 0 0 0 0 16-3584
+chrM 8405 0 0 0 0 0 0 0 16-3584
+chrM 8406 0 0 0 0 0 0 0 16-3584
+chrM 8407 0 0 0 0 0 0 0 16-3584
+chrM 8408 0 0 0 0 0 0 0 16-3584
+chrM 8409 0 0 0 0 0 0 0 16-3584
+chrM 8410 0 0 0 0 0 0 0 16-3584
+chrM 8411 0 0 0 0 0 0 0 16-3584
+chrM 8412 0 0 0 0 0 0 0 16-3584
+chrM 8413 0 0 0 0 0 0 0 16-3584
+chrM 8414 0 0 0 0 0 0 0 16-3584
+chrM 8415 0 0 0 0 0 0 0 16-3584
+chrM 8416 0 0 0 0 0 0 0 16-3584
+chrM 8417 0 0 0 0 0 0 0 16-3584
+chrM 8418 0 0 0 0 0 0 0 16-3584
+chrM 8419 0 0 0 0 0 0 0 16-3584
+chrM 8420 0 0 0 0 0 0 0 16-3584
+chrM 8421 0 0 0 0 0 0 0 16-3584
+chrM 8422 0 0 0 0 0 0 0 16-3584
+chrM 8423 0 0 0 0 0 0 0 16-3584
+chrM 8424 0 0 0 0 0 0 0 16-3584
+chrM 8425 0 0 0 0 0 0 0 16-3584
+chrM 8426 0 0 0 0 0 0 0 16-3584
+chrM 8427 0 0 0 0 0 0 0 16-3584
+chrM 8428 0 0 0 0 0 0 0 16-3584
+chrM 8429 0 0 0 0 0 0 0 16-3584
+chrM 8430 0 0 0 0 0 0 0 16-3584
+chrM 8431 0 0 0 0 0 0 0 16-3584
+chrM 8432 0 0 0 0 0 0 0 16-3584
+chrM 8433 0 0 0 0 0 0 0 16-3584
+chrM 8434 0 0 0 0 0 0 0 16-3584
+chrM 8435 0 0 0 0 0 0 0 16-3584
+chrM 8436 0 0 0 0 0 0 0 16-3584
+chrM 8437 0 0 0 0 0 0 0 16-3584
+chrM 8438 0 0 0 0 0 0 0 16-3584
+chrM 8439 0 0 0 0 0 0 0 16-3584
+chrM 8440 0 0 0 0 0 0 0 16-3584
+chrM 8441 0 0 0 0 0 0 0 16-3584
+chrM 8442 0 0 0 0 0 0 0 16-3584
+chrM 8443 0 0 0 0 0 0 0 16-3584
+chrM 8444 0 0 0 0 0 0 0 16-3584
+chrM 8445 0 0 0 0 0 0 0 16-3584
+chrM 8446 0 0 0 0 0 0 0 16-3584
+chrM 8447 0 0 0 0 0 0 0 16-3584
+chrM 8448 0 0 0 0 0 0 0 16-3584
+chrM 8449 0 0 0 0 0 0 0 16-3584
+chrM 8450 0 0 0 0 0 0 0 16-3584
+chrM 8451 0 0 0 0 0 0 0 16-3584
+chrM 8452 0 0 0 0 0 0 0 16-3584
+chrM 8453 0 0 0 0 0 0 0 16-3584
+chrM 8454 0 0 0 0 0 0 0 16-3584
+chrM 8455 0 0 0 0 0 0 0 16-3584
+chrM 8456 0 0 0 0 0 0 0 16-3584
+chrM 8457 0 0 0 0 0 0 0 16-3584
+chrM 8458 0 0 0 0 0 0 0 16-3584
+chrM 8459 0 0 0 0 0 0 0 16-3584
+chrM 8460 0 0 0 0 0 0 0 16-3584
+chrM 8461 0 0 0 0 0 0 0 16-3584
+chrM 8462 0 0 0 0 0 0 0 16-3584
+chrM 8463 0 0 0 0 0 0 0 16-3584
+chrM 8464 0 0 0 0 0 0 0 16-3584
+chrM 8465 0 0 0 0 0 0 0 16-3584
+chrM 8466 0 0 0 0 0 0 0 16-3584
+chrM 8467 0 0 0 0 0 0 0 16-3584
+chrM 8468 0 0 0 0 0 0 0 16-3584
+chrM 8469 0 0 0 0 0 0 0 16-3584
+chrM 8470 0 0 0 0 0 0 0 16-3584
+chrM 8471 0 0 0 0 0 0 0 16-3584
+chrM 8472 0 0 0 0 0 0 0 16-3584
+chrM 8473 0 0 0 0 0 0 0 16-3584
+chrM 8474 0 0 0 0 0 0 0 16-3584
+chrM 8475 0 0 0 0 0 0 0 16-3584
+chrM 8476 0 0 0 0 0 0 0 16-3584
+chrM 8477 0 0 0 0 0 0 0 16-3584
+chrM 8478 0 0 0 0 0 0 0 16-3584
+chrM 8479 0 0 0 0 0 0 0 16-3584
+chrM 8480 0 0 0 0 0 0 0 16-3584
+chrM 8481 0 0 0 0 0 0 0 16-3584
+chrM 8482 0 0 0 0 0 0 0 16-3584
+chrM 8483 0 0 0 0 0 0 0 16-3584
+chrM 8484 0 0 0 0 0 0 0 16-3584
+chrM 8485 0 0 0 0 0 0 0 16-3584
+chrM 8486 0 0 0 0 0 0 0 16-3584
+chrM 8487 0 0 0 0 0 0 0 16-3584
+chrM 8488 0 0 0 0 0 0 0 16-3584
+chrM 8489 0 0 0 0 0 0 0 16-3584
+chrM 8490 0 0 0 0 0 0 0 16-3584
+chrM 8491 0 0 0 0 0 0 0 16-3584
+chrM 8492 0 0 0 0 0 0 0 16-3584
+chrM 8493 0 0 0 0 0 0 0 16-3584
+chrM 8494 0 0 0 0 0 0 0 16-3584
+chrM 8495 0 0 0 0 0 0 0 16-3584
+chrM 8496 0 0 0 0 0 0 0 16-3584
+chrM 8497 0 0 0 0 0 0 0 16-3584
+chrM 8498 0 0 0 0 0 0 0 16-3584
+chrM 8499 0 0 0 0 0 0 0 16-3584
+chrM 8500 0 0 0 0 0 0 0 16-3584
+chrM 8501 0 0 0 0 0 0 0 16-3584
+chrM 8502 0 0 0 0 0 0 0 16-3584
+chrM 8503 0 0 0 0 0 0 0 16-3584
+chrM 8504 0 0 0 0 0 0 0 16-3584
+chrM 8505 0 0 0 0 0 0 0 16-3584
+chrM 8506 0 0 0 0 0 0 0 16-3584
+chrM 8507 0 0 0 0 0 0 0 16-3584
+chrM 8508 0 0 0 0 0 0 0 16-3584
+chrM 8509 0 0 0 0 0 0 0 16-3584
+chrM 8510 0 0 0 0 0 0 0 16-3584
+chrM 8511 0 0 0 0 0 0 0 16-3584
+chrM 8512 0 0 0 0 0 0 0 16-3584
+chrM 8513 0 0 0 0 0 0 0 16-3584
+chrM 8514 0 0 0 0 0 0 0 16-3584
+chrM 8515 0 0 0 0 0 0 0 16-3584
+chrM 8516 0 0 0 0 0 0 0 16-3584
+chrM 8517 0 0 0 0 0 0 0 16-3584
+chrM 8518 0 0 0 0 0 0 0 16-3584
+chrM 8519 0 0 0 0 0 0 0 16-3584
+chrM 8520 0 0 0 0 0 0 0 16-3584
+chrM 8521 0 0 0 0 0 0 0 16-3584
+chrM 8522 0 0 0 0 0 0 0 16-3584
+chrM 8523 0 0 0 0 0 0 0 16-3584
+chrM 8524 0 0 0 0 0 0 0 16-3584
+chrM 8525 0 0 0 0 0 0 0 16-3584
+chrM 8526 0 0 0 0 0 0 0 16-3584
+chrM 8527 0 0 0 0 0 0 0 16-3584
+chrM 8528 0 0 0 0 0 0 0 16-3584
+chrM 8529 0 0 0 0 0 0 0 16-3584
+chrM 8530 0 0 0 0 0 0 0 16-3584
+chrM 8531 0 0 0 0 0 0 0 16-3584
+chrM 8532 0 0 0 0 0 0 0 16-3584
+chrM 8533 0 0 0 0 0 0 0 16-3584
+chrM 8534 0 0 0 0 0 0 0 16-3584
+chrM 8535 0 0 0 0 0 0 0 16-3584
+chrM 8536 0 0 0 0 0 0 0 16-3584
+chrM 8537 0 0 0 0 0 0 0 16-3584
+chrM 8538 0 0 0 0 0 0 0 16-3584
+chrM 8539 0 0 0 0 0 0 0 16-3584
+chrM 8540 0 0 0 0 0 0 0 16-3584
+chrM 8541 0 0 0 0 0 0 0 16-3584
+chrM 8542 0 0 0 0 0 0 0 16-3584
+chrM 8543 0 0 0 0 0 0 0 16-3584
+chrM 8544 0 0 0 0 0 0 0 16-3584
+chrM 8545 0 0 0 0 0 0 0 16-3584
+chrM 8546 0 0 0 0 0 0 0 16-3584
+chrM 8547 0 0 0 0 0 0 0 16-3584
+chrM 8548 0 0 0 0 0 0 0 16-3584
+chrM 8549 0 0 0 0 0 0 0 16-3584
+chrM 8550 0 0 0 0 0 0 0 16-3584
+chrM 8551 0 0 0 0 0 0 0 16-3584
+chrM 8552 0 0 0 0 0 0 0 16-3584
+chrM 8553 0 0 0 0 0 0 0 16-3584
+chrM 8554 0 0 0 0 0 0 0 16-3584
+chrM 8555 0 0 0 0 0 0 0 16-3584
+chrM 8556 0 0 0 0 0 0 0 16-3584
+chrM 8557 0 0 0 0 0 0 0 16-3584
+chrM 8558 0 0 0 0 0 0 0 16-3584
+chrM 8559 0 0 0 0 0 0 0 16-3584
+chrM 8560 0 0 0 0 0 0 0 16-3584
+chrM 8561 0 0 0 0 0 0 0 16-3584
+chrM 8562 0 0 0 0 0 0 0 16-3584
+chrM 8563 0 0 0 0 0 0 0 16-3584
+chrM 8564 0 0 0 0 0 0 0 16-3584
+chrM 8565 0 0 0 0 0 0 0 16-3584
+chrM 8566 0 0 0 0 0 0 0 16-3584
+chrM 8567 0 0 0 0 0 0 0 16-3584
+chrM 8568 0 0 0 0 0 0 0 16-3584
+chrM 8569 0 0 0 0 0 0 0 16-3584
+chrM 8570 0 0 0 0 0 0 0 16-3584
+chrM 8571 0 0 0 0 0 0 0 16-3584
+chrM 8572 0 0 0 0 0 0 0 16-3584
+chrM 8573 0 0 0 0 0 0 0 16-3584
+chrM 8574 0 0 0 0 0 0 0 16-3584
+chrM 8575 0 0 0 0 0 0 0 16-3584
+chrM 8576 0 0 0 0 0 0 0 16-3584
+chrM 8577 0 0 0 0 0 0 0 16-3584
+chrM 8578 0 0 0 0 0 0 0 16-3584
+chrM 8579 0 0 0 0 0 0 0 16-3584
+chrM 8580 0 0 0 0 0 0 0 16-3584
+chrM 8581 0 0 0 0 0 0 0 16-3584
+chrM 8582 0 0 0 0 0 0 0 16-3584
+chrM 8583 0 0 0 0 0 0 0 16-3584
+chrM 8584 0 0 0 0 0 0 0 16-3584
+chrM 8585 0 0 0 0 0 0 0 16-3584
+chrM 8586 0 0 0 0 0 0 0 16-3584
+chrM 8587 0 0 0 0 0 0 0 16-3584
+chrM 8588 0 0 0 0 0 0 0 16-3584
+chrM 8589 0 0 0 0 0 0 0 16-3584
+chrM 8590 0 0 0 0 0 0 0 16-3584
+chrM 8591 0 0 0 0 0 0 0 16-3584
+chrM 8592 0 0 0 0 0 0 0 16-3584
+chrM 8593 0 0 0 0 0 0 0 16-3584
+chrM 8594 0 0 0 0 0 0 0 16-3584
+chrM 8595 0 0 0 0 0 0 0 16-3584
+chrM 8596 0 0 0 0 0 0 0 16-3584
+chrM 8597 0 0 0 0 0 0 0 16-3584
+chrM 8598 0 0 0 0 0 0 0 16-3584
+chrM 8599 0 0 0 0 0 0 0 16-3584
+chrM 8600 0 0 0 0 0 0 0 16-3584
+chrM 8601 0 0 0 0 0 0 0 16-3584
+chrM 8602 0 0 0 0 0 0 0 16-3584
+chrM 8603 0 0 0 0 0 0 0 16-3584
+chrM 8604 0 0 0 0 0 0 0 16-3584
+chrM 8605 0 0 0 0 0 0 0 16-3584
+chrM 8606 0 0 0 0 0 0 0 16-3584
+chrM 8607 0 0 0 0 0 0 0 16-3584
+chrM 8608 0 0 0 0 0 0 0 16-3584
+chrM 8609 0 0 0 0 0 0 0 16-3584
+chrM 8610 0 0 0 0 0 0 0 16-3584
+chrM 8611 0 0 0 0 0 0 0 16-3584
+chrM 8612 0 0 0 0 0 0 0 16-3584
+chrM 8613 0 0 0 0 0 0 0 16-3584
+chrM 8614 0 0 0 0 0 0 0 16-3584
+chrM 8615 0 0 0 0 0 0 0 16-3584
+chrM 8616 0 0 0 0 0 0 0 16-3584
+chrM 8617 0 0 0 0 0 0 0 16-3584
+chrM 8618 0 0 0 0 0 0 0 16-3584
+chrM 8619 0 0 0 0 0 0 0 16-3584
+chrM 8620 0 0 0 0 0 0 0 16-3584
+chrM 8621 0 0 0 0 0 0 0 16-3584
+chrM 8622 0 0 0 0 0 0 0 16-3584
+chrM 8623 0 0 0 0 0 0 0 16-3584
+chrM 8624 0 0 0 0 0 0 0 16-3584
+chrM 8625 0 0 0 0 0 0 0 16-3584
+chrM 8626 0 0 0 0 0 0 0 16-3584
+chrM 8627 0 0 0 0 0 0 0 16-3584
+chrM 8628 0 0 0 0 0 0 0 16-3584
+chrM 8629 0 0 0 0 0 0 0 16-3584
+chrM 8630 0 0 0 0 0 0 0 16-3584
+chrM 8631 0 0 0 0 0 0 0 16-3584
+chrM 8632 0 0 0 0 0 0 0 16-3584
+chrM 8633 0 0 0 0 0 0 0 16-3584
+chrM 8634 0 0 0 0 0 0 0 16-3584
+chrM 8635 0 0 0 0 0 0 0 16-3584
+chrM 8636 0 0 0 0 0 0 0 16-3584
+chrM 8637 0 0 0 0 0 0 0 16-3584
+chrM 8638 0 0 0 0 0 0 0 16-3584
+chrM 8639 0 0 0 0 0 0 0 16-3584
+chrM 8640 0 0 0 0 0 0 0 16-3584
+chrM 8641 0 0 0 0 0 0 0 16-3584
+chrM 8642 0 0 0 0 0 0 0 16-3584
+chrM 8643 0 0 0 0 0 0 0 16-3584
+chrM 8644 0 0 0 0 0 0 0 16-3584
+chrM 8645 0 0 0 0 0 0 0 16-3584
+chrM 8646 0 0 0 0 0 0 0 16-3584
+chrM 8647 0 0 0 0 0 0 0 16-3584
+chrM 8648 0 0 0 0 0 0 0 16-3584
+chrM 8649 0 0 0 0 0 0 0 16-3584
+chrM 8650 0 0 0 0 0 0 0 16-3584
+chrM 8651 0 0 0 0 0 0 0 16-3584
+chrM 8652 0 0 0 0 0 0 0 16-3584
+chrM 8653 0 0 0 0 0 0 0 16-3584
+chrM 8654 0 0 0 0 0 0 0 16-3584
+chrM 8655 0 0 0 0 0 0 0 16-3584
+chrM 8656 0 0 0 0 0 0 0 16-3584
+chrM 8657 0 0 0 0 0 0 0 16-3584
+chrM 8658 0 0 0 0 0 0 0 16-3584
+chrM 8659 0 0 0 0 0 0 0 16-3584
+chrM 8660 0 0 0 0 0 0 0 16-3584
+chrM 8661 0 0 0 0 0 0 0 16-3584
+chrM 8662 0 0 0 0 0 0 0 16-3584
+chrM 8663 0 0 0 0 0 0 0 16-3584
+chrM 8664 0 0 0 0 0 0 0 16-3584
+chrM 8665 0 0 0 0 0 0 0 16-3584
+chrM 8666 0 0 0 0 0 0 0 16-3584
+chrM 8667 0 0 0 0 0 0 0 16-3584
+chrM 8668 0 0 0 0 0 0 0 16-3584
+chrM 8669 0 0 0 0 0 0 0 16-3584
+chrM 8670 0 0 0 0 0 0 0 16-3584
+chrM 8671 0 0 0 0 0 0 0 16-3584
+chrM 8672 0 0 0 0 0 0 0 16-3584
+chrM 8673 0 0 0 0 0 0 0 16-3584
+chrM 8674 0 0 0 0 0 0 0 16-3584
+chrM 8675 0 0 0 0 0 0 0 16-3584
+chrM 8676 0 0 0 0 0 0 0 16-3584
+chrM 8677 0 0 0 0 0 0 0 16-3584
+chrM 8678 0 0 0 0 0 0 0 16-3584
+chrM 8679 0 0 0 0 0 0 0 16-3584
+chrM 8680 0 0 0 0 0 0 0 16-3584
+chrM 8681 0 0 0 0 0 0 0 16-3584
+chrM 8682 0 0 0 0 0 0 0 16-3584
+chrM 8683 0 0 0 0 0 0 0 16-3584
+chrM 8684 0 0 0 0 0 0 0 16-3584
+chrM 8685 0 0 0 0 0 0 0 16-3584
+chrM 8686 0 0 0 0 0 0 0 16-3584
+chrM 8687 0 0 0 0 0 0 0 16-3584
+chrM 8688 0 0 0 0 0 0 0 16-3584
+chrM 8689 0 0 0 0 0 0 0 16-3584
+chrM 8690 0 0 0 0 0 0 0 16-3584
+chrM 8691 0 0 0 0 0 0 0 16-3584
+chrM 8692 0 0 0 0 0 0 0 16-3584
+chrM 8693 0 0 0 0 0 0 0 16-3584
+chrM 8694 0 0 0 0 0 0 0 16-3584
+chrM 8695 0 0 0 0 0 0 0 16-3584
+chrM 8696 0 0 0 0 0 0 0 16-3584
+chrM 8697 0 0 0 0 0 0 0 16-3584
+chrM 8698 0 0 0 0 0 0 0 16-3584
+chrM 8699 0 0 0 0 0 0 0 16-3584
+chrM 8700 0 0 0 0 0 0 0 16-3584
+chrM 8701 0 0 0 0 0 0 0 16-3584
+chrM 8702 0 0 0 0 0 0 0 16-3584
+chrM 8703 0 0 0 0 0 0 0 16-3584
+chrM 8704 0 0 0 0 0 0 0 16-3584
+chrM 8705 0 0 0 0 0 0 0 16-3584
+chrM 8706 0 0 0 0 0 0 0 16-3584
+chrM 8707 0 0 0 0 0 0 0 16-3584
+chrM 8708 0 0 0 0 0 0 0 16-3584
+chrM 8709 0 0 0 0 0 0 0 16-3584
+chrM 8710 0 0 0 0 0 0 0 16-3584
+chrM 8711 0 0 0 0 0 0 0 16-3584
+chrM 8712 0 0 0 0 0 0 0 16-3584
+chrM 8713 0 0 0 0 0 0 0 16-3584
+chrM 8714 0 0 0 0 0 0 0 16-3584
+chrM 8715 0 0 0 0 0 0 0 16-3584
+chrM 8716 0 0 0 0 0 0 0 16-3584
+chrM 8717 0 0 0 0 0 0 0 16-3584
+chrM 8718 0 0 0 0 0 0 0 16-3584
+chrM 8719 0 0 0 0 0 0 0 16-3584
+chrM 8720 0 0 0 0 0 0 0 16-3584
+chrM 8721 0 0 0 0 0 0 0 16-3584
+chrM 8722 0 0 0 0 0 0 0 16-3584
+chrM 8723 0 0 0 0 0 0 0 16-3584
+chrM 8724 0 0 0 0 0 0 0 16-3584
+chrM 8725 0 0 0 0 0 0 0 16-3584
+chrM 8726 0 0 0 0 0 0 0 16-3584
+chrM 8727 0 0 0 0 0 0 0 16-3584
+chrM 8728 0 0 0 0 0 0 0 16-3584
+chrM 8729 0 0 0 0 0 0 0 16-3584
+chrM 8730 0 0 0 0 0 0 0 16-3584
+chrM 8731 0 0 0 0 0 0 0 16-3584
+chrM 8732 0 0 0 0 0 0 0 16-3584
+chrM 8733 0 0 0 0 0 0 0 16-3584
+chrM 8734 0 0 0 0 0 0 0 16-3584
+chrM 8735 0 0 0 0 0 0 0 16-3584
+chrM 8736 0 0 0 0 0 0 0 16-3584
+chrM 8737 0 0 0 0 0 0 0 16-3584
+chrM 8738 0 0 0 0 0 0 0 16-3584
+chrM 8739 0 0 0 0 0 0 0 16-3584
+chrM 8740 0 0 0 0 0 0 0 16-3584
+chrM 8741 0 0 0 0 0 0 0 16-3584
+chrM 8742 0 0 0 0 0 0 0 16-3584
+chrM 8743 0 0 0 0 0 0 0 16-3584
+chrM 8744 0 0 0 0 0 0 0 16-3584
+chrM 8745 0 0 0 0 0 0 0 16-3584
+chrM 8746 0 0 0 0 0 0 0 16-3584
+chrM 8747 0 0 0 0 0 0 0 16-3584
+chrM 8748 0 0 0 0 0 0 0 16-3584
+chrM 8749 0 0 0 0 0 0 0 16-3584
+chrM 8750 0 0 0 0 0 0 0 16-3584
+chrM 8751 0 0 0 0 0 0 0 16-3584
+chrM 8752 0 0 0 0 0 0 0 16-3584
+chrM 8753 0 0 0 0 0 0 0 16-3584
+chrM 8754 0 0 0 0 0 0 0 16-3584
+chrM 8755 0 0 0 0 0 0 0 16-3584
+chrM 8756 0 0 0 0 0 0 0 16-3584
+chrM 8757 0 0 0 0 0 0 0 16-3584
+chrM 8758 0 0 0 0 0 0 0 16-3584
+chrM 8759 0 0 0 0 0 0 0 16-3584
+chrM 8760 0 0 0 0 0 0 0 16-3584
+chrM 8761 0 0 0 0 0 0 0 16-3584
+chrM 8762 0 0 0 0 0 0 0 16-3584
+chrM 8763 0 0 0 0 0 0 0 16-3584
+chrM 8764 0 0 0 0 0 0 0 16-3584
+chrM 8765 0 0 0 0 0 0 0 16-3584
+chrM 8766 0 0 0 0 0 0 0 16-3584
+chrM 8767 0 0 0 0 0 0 0 16-3584
+chrM 8768 0 0 0 0 0 0 0 16-3584
+chrM 8769 0 0 0 0 0 0 0 16-3584
+chrM 8770 0 0 0 0 0 0 0 16-3584
+chrM 8771 0 0 0 0 0 0 0 16-3584
+chrM 8772 0 0 0 0 0 0 0 16-3584
+chrM 8773 0 0 0 0 0 0 0 16-3584
+chrM 8774 0 0 0 0 0 0 0 16-3584
+chrM 8775 0 0 0 0 0 0 0 16-3584
+chrM 8776 0 0 0 0 0 0 0 16-3584
+chrM 8777 0 0 0 0 0 0 0 16-3584
+chrM 8778 0 0 0 0 0 0 0 16-3584
+chrM 8779 0 0 0 0 0 0 0 16-3584
+chrM 8780 0 0 0 0 0 0 0 16-3584
+chrM 8781 0 0 0 0 0 0 0 16-3584
+chrM 8782 0 0 0 0 0 0 0 16-3584
+chrM 8783 0 0 0 0 0 0 0 16-3584
+chrM 8784 0 0 0 0 0 0 0 16-3584
+chrM 8785 0 0 0 0 0 0 0 16-3584
+chrM 8786 0 0 0 0 0 0 0 16-3584
+chrM 8787 0 0 0 0 0 0 0 16-3584
+chrM 8788 0 0 0 0 0 0 0 16-3584
+chrM 8789 0 0 0 0 0 0 0 16-3584
+chrM 8790 0 0 0 0 0 0 0 16-3584
+chrM 8791 0 0 0 0 0 0 0 16-3584
+chrM 8792 0 0 0 0 0 0 0 16-3584
+chrM 8793 0 0 0 0 0 0 0 16-3584
+chrM 8794 0 0 0 0 0 0 0 16-3584
+chrM 8795 0 0 0 0 0 0 0 16-3584
+chrM 8796 0 0 0 0 0 0 0 16-3584
+chrM 8797 0 0 0 0 0 0 0 16-3584
+chrM 8798 0 0 0 0 0 0 0 16-3584
+chrM 8799 0 0 0 0 0 0 0 16-3584
+chrM 8800 0 0 0 0 0 0 0 16-3584
+chrM 8801 0 0 0 0 0 0 0 16-3584
+chrM 8802 0 0 0 0 0 0 0 16-3584
+chrM 8803 0 0 0 0 0 0 0 16-3584
+chrM 8804 0 0 0 0 0 0 0 16-3584
+chrM 8805 0 0 0 0 0 0 0 16-3584
+chrM 8806 0 0 0 0 0 0 0 16-3584
+chrM 8807 0 0 0 0 0 0 0 16-3584
+chrM 8808 0 0 0 0 0 0 0 16-3584
+chrM 8809 0 0 0 0 0 0 0 16-3584
+chrM 8810 0 0 0 0 0 0 0 16-3584
+chrM 8811 0 0 0 0 0 0 0 16-3584
+chrM 8812 0 0 0 0 0 0 0 16-3584
+chrM 8813 0 0 0 0 0 0 0 16-3584
+chrM 8814 0 0 0 0 0 0 0 16-3584
+chrM 8815 0 0 0 0 0 0 0 16-3584
+chrM 8816 0 0 0 0 0 0 0 16-3584
+chrM 8817 0 0 0 0 0 0 0 16-3584
+chrM 8818 0 0 0 0 0 0 0 16-3584
+chrM 8819 0 0 0 0 0 0 0 16-3584
+chrM 8820 0 0 0 0 0 0 0 16-3584
+chrM 8821 0 0 0 0 0 0 0 16-3584
+chrM 8822 0 0 0 0 0 0 0 16-3584
+chrM 8823 0 0 0 0 0 0 0 16-3584
+chrM 8824 0 0 0 0 0 0 0 16-3584
+chrM 8825 0 0 0 0 0 0 0 16-3584
+chrM 8826 0 0 0 0 0 0 0 16-3584
+chrM 8827 0 0 0 0 0 0 0 16-3584
+chrM 8828 0 0 0 0 0 0 0 16-3584
+chrM 8829 0 0 0 0 0 0 0 16-3584
+chrM 8830 0 0 0 0 0 0 0 16-3584
+chrM 8831 0 0 0 0 0 0 0 16-3584
+chrM 8832 0 0 0 0 0 0 0 16-3584
+chrM 8833 0 0 0 0 0 0 0 16-3584
+chrM 8834 0 0 0 0 0 0 0 16-3584
+chrM 8835 0 0 0 0 0 0 0 16-3584
+chrM 8836 0 0 0 0 0 0 0 16-3584
+chrM 8837 0 0 0 0 0 0 0 16-3584
+chrM 8838 0 0 0 0 0 0 0 16-3584
+chrM 8839 0 0 0 0 0 0 0 16-3584
+chrM 8840 0 0 0 0 0 0 0 16-3584
+chrM 8841 0 0 0 0 0 0 0 16-3584
+chrM 8842 0 0 0 0 0 0 0 16-3584
+chrM 8843 0 0 0 0 0 0 0 16-3584
+chrM 8844 0 0 0 0 0 0 0 16-3584
+chrM 8845 0 0 0 0 0 0 0 16-3584
+chrM 8846 0 0 0 0 0 0 0 16-3584
+chrM 8847 0 0 0 0 0 0 0 16-3584
+chrM 8848 0 0 0 0 0 0 0 16-3584
+chrM 8849 0 0 0 0 0 0 0 16-3584
+chrM 8850 0 0 0 0 0 0 0 16-3584
+chrM 8851 0 0 0 0 0 0 0 16-3584
+chrM 8852 0 0 0 0 0 0 0 16-3584
+chrM 8853 0 0 0 0 0 0 0 16-3584
+chrM 8854 0 0 0 0 0 0 0 16-3584
+chrM 8855 0 0 0 0 0 0 0 16-3584
+chrM 8856 0 0 0 0 0 0 0 16-3584
+chrM 8857 0 0 0 0 0 0 0 16-3584
+chrM 8858 0 0 0 0 0 0 0 16-3584
+chrM 8859 0 0 0 0 0 0 0 16-3584
+chrM 8860 0 0 0 0 0 0 0 16-3584
+chrM 8861 0 0 0 0 0 0 0 16-3584
+chrM 8862 0 0 0 0 0 0 0 16-3584
+chrM 8863 0 0 0 0 0 0 0 16-3584
+chrM 8864 0 0 0 0 0 0 0 16-3584
+chrM 8865 0 0 0 0 0 0 0 16-3584
+chrM 8866 0 0 0 0 0 0 0 16-3584
+chrM 8867 0 0 0 0 0 0 0 16-3584
+chrM 8868 0 0 0 0 0 0 0 16-3584
+chrM 8869 0 0 0 0 0 0 0 16-3584
+chrM 8870 0 0 0 0 0 0 0 16-3584
+chrM 8871 0 0 0 0 0 0 0 16-3584
+chrM 8872 0 0 0 0 0 0 0 16-3584
+chrM 8873 0 0 0 0 0 0 0 16-3584
+chrM 8874 0 0 0 0 0 0 0 16-3584
+chrM 8875 0 0 0 0 0 0 0 16-3584
+chrM 8876 0 0 0 0 0 0 0 16-3584
+chrM 8877 0 0 0 0 0 0 0 16-3584
+chrM 8878 0 0 0 0 0 0 0 16-3584
+chrM 8879 0 0 0 0 0 0 0 16-3584
+chrM 8880 0 0 0 0 0 0 0 16-3584
+chrM 8881 0 0 0 0 0 0 0 16-3584
+chrM 8882 0 0 0 0 0 0 0 16-3584
+chrM 8883 0 0 0 0 0 0 0 16-3584
+chrM 8884 0 0 0 0 0 0 0 16-3584
+chrM 8885 0 0 0 0 0 0 0 16-3584
+chrM 8886 0 0 0 0 0 0 0 16-3584
+chrM 8887 0 0 0 0 0 0 0 16-3584
+chrM 8888 0 0 0 0 0 0 0 16-3584
+chrM 8889 0 0 0 0 0 0 0 16-3584
+chrM 8890 0 0 0 0 0 0 0 16-3584
+chrM 8891 0 0 0 0 0 0 0 16-3584
+chrM 8892 0 0 0 0 0 0 0 16-3584
+chrM 8893 0 0 0 0 0 0 0 16-3584
+chrM 8894 0 0 0 0 0 0 0 16-3584
+chrM 8895 0 0 0 0 0 0 0 16-3584
+chrM 8896 0 0 0 0 0 0 0 16-3584
+chrM 8897 0 0 0 0 0 0 0 16-3584
+chrM 8898 0 0 0 0 0 0 0 16-3584
+chrM 8899 0 0 0 0 0 0 0 16-3584
+chrM 8900 0 0 0 0 0 0 0 16-3584
+chrM 8901 0 0 0 0 0 0 0 16-3584
+chrM 8902 0 0 0 0 0 0 0 16-3584
+chrM 8903 0 0 0 0 0 0 0 16-3584
+chrM 8904 0 0 0 0 0 0 0 16-3584
+chrM 8905 0 0 0 0 0 0 0 16-3584
+chrM 8906 0 0 0 0 0 0 0 16-3584
+chrM 8907 0 0 0 0 0 0 0 16-3584
+chrM 8908 0 0 0 0 0 0 0 16-3584
+chrM 8909 0 0 0 0 0 0 0 16-3584
+chrM 8910 0 0 0 0 0 0 0 16-3584
+chrM 8911 0 0 0 0 0 0 0 16-3584
+chrM 8912 0 0 0 0 0 0 0 16-3584
+chrM 8913 0 0 0 0 0 0 0 16-3584
+chrM 8914 0 0 0 0 0 0 0 16-3584
+chrM 8915 0 0 0 0 0 0 0 16-3584
+chrM 8916 0 0 0 0 0 0 0 16-3584
+chrM 8917 0 0 0 0 0 0 0 16-3584
+chrM 8918 0 0 0 0 0 0 0 16-3584
+chrM 8919 0 0 0 0 0 0 0 16-3584
+chrM 8920 0 0 0 0 0 0 0 16-3584
+chrM 8921 0 0 0 0 0 0 0 16-3584
+chrM 8922 0 0 0 0 0 0 0 16-3584
+chrM 8923 0 0 0 0 0 0 0 16-3584
+chrM 8924 0 0 0 0 0 0 0 16-3584
+chrM 8925 0 0 0 0 0 0 0 16-3584
+chrM 8926 0 0 0 0 0 0 0 16-3584
+chrM 8927 0 0 0 0 0 0 0 16-3584
+chrM 8928 0 0 0 0 0 0 0 16-3584
+chrM 8929 0 0 0 0 0 0 0 16-3584
+chrM 8930 0 0 0 0 0 0 0 16-3584
+chrM 8931 0 0 0 0 0 0 0 16-3584
+chrM 8932 0 0 0 0 0 0 0 16-3584
+chrM 8933 0 0 0 0 0 0 0 16-3584
+chrM 8934 0 0 0 0 0 0 0 16-3584
+chrM 8935 0 0 0 0 0 0 0 16-3584
+chrM 8936 0 0 0 0 0 0 0 16-3584
+chrM 8937 0 0 0 0 0 0 0 16-3584
+chrM 8938 0 0 0 0 0 0 0 16-3584
+chrM 8939 0 0 0 0 0 0 0 16-3584
+chrM 8940 0 0 0 0 0 0 0 16-3584
+chrM 8941 0 0 0 0 0 0 0 16-3584
+chrM 8942 0 0 0 0 0 0 0 16-3584
+chrM 8943 0 0 0 0 0 0 0 16-3584
+chrM 8944 0 0 0 0 0 0 0 16-3584
+chrM 8945 0 0 0 0 0 0 0 16-3584
+chrM 8946 0 0 0 0 0 0 0 16-3584
+chrM 8947 0 0 0 0 0 0 0 16-3584
+chrM 8948 0 0 0 0 0 0 0 16-3584
+chrM 8949 0 0 0 0 0 0 0 16-3584
+chrM 8950 0 0 0 0 0 0 0 16-3584
+chrM 8951 0 0 0 0 0 0 0 16-3584
+chrM 8952 0 0 0 0 0 0 0 16-3584
+chrM 8953 0 0 0 0 0 0 0 16-3584
+chrM 8954 0 0 0 0 0 0 0 16-3584
+chrM 8955 0 0 0 0 0 0 0 16-3584
+chrM 8956 0 0 0 0 0 0 0 16-3584
+chrM 8957 0 0 0 0 0 0 0 16-3584
+chrM 8958 0 0 0 0 0 0 0 16-3584
+chrM 8959 0 0 0 0 0 0 0 16-3584
+chrM 8960 0 0 0 0 0 0 0 16-3584
+chrM 8961 0 0 0 0 0 0 0 16-3584
+chrM 8962 0 0 0 0 0 0 0 16-3584
+chrM 8963 0 0 0 0 0 0 0 16-3584
+chrM 8964 0 0 0 0 0 0 0 16-3584
+chrM 8965 0 0 0 0 0 0 0 16-3584
+chrM 8966 0 0 0 0 0 0 0 16-3584
+chrM 8967 0 0 0 0 0 0 0 16-3584
+chrM 8968 0 0 0 0 0 0 0 16-3584
+chrM 8969 0 0 0 0 0 0 0 16-3584
+chrM 8970 0 0 0 0 0 0 0 16-3584
+chrM 8971 0 0 0 0 0 0 0 16-3584
+chrM 8972 0 0 0 0 0 0 0 16-3584
+chrM 8973 0 0 0 0 0 0 0 16-3584
+chrM 8974 0 0 0 0 0 0 0 16-3584
+chrM 8975 0 0 0 0 0 0 0 16-3584
+chrM 8976 0 0 0 0 0 0 0 16-3584
+chrM 8977 0 0 0 0 0 0 0 16-3584
+chrM 8978 0 0 0 0 0 0 0 16-3584
+chrM 8979 0 0 0 0 0 0 0 16-3584
+chrM 8980 0 0 0 0 0 0 0 16-3584
+chrM 8981 0 0 0 0 0 0 0 16-3584
+chrM 8982 0 0 0 0 0 0 0 16-3584
+chrM 8983 0 0 0 0 0 0 0 16-3584
+chrM 8984 0 0 0 0 0 0 0 16-3584
+chrM 8985 0 0 0 0 0 0 0 16-3584
+chrM 8986 0 0 0 0 0 0 0 16-3584
+chrM 8987 0 0 0 0 0 0 0 16-3584
+chrM 8988 0 0 0 0 0 0 0 16-3584
+chrM 8989 0 0 0 0 0 0 0 16-3584
+chrM 8990 0 0 0 0 0 0 0 16-3584
+chrM 8991 0 0 0 0 0 0 0 16-3584
+chrM 8992 0 0 0 0 0 0 0 16-3584
+chrM 8993 0 0 0 0 0 0 0 16-3584
+chrM 8994 0 0 0 0 0 0 0 16-3584
+chrM 8995 0 0 0 0 0 0 0 16-3584
+chrM 8996 0 0 0 0 0 0 0 16-3584
+chrM 8997 0 0 0 0 0 0 0 16-3584
+chrM 8998 0 0 0 0 0 0 0 16-3584
+chrM 8999 0 0 0 0 0 0 0 16-3584
+chrM 9000 0 0 0 0 0 0 0 16-3584
+chrM 9001 0 0 0 0 0 0 0 16-3584
+chrM 9002 0 0 0 0 0 0 0 16-3584
+chrM 9003 0 0 0 0 0 0 0 16-3584
+chrM 9004 0 0 0 0 0 0 0 16-3584
+chrM 9005 0 0 0 0 0 0 0 16-3584
+chrM 9006 0 0 0 0 0 0 0 16-3584
+chrM 9007 0 0 0 0 0 0 0 16-3584
+chrM 9008 0 0 0 0 0 0 0 16-3584
+chrM 9009 0 0 0 0 0 0 0 16-3584
+chrM 9010 0 0 0 0 0 0 0 16-3584
+chrM 9011 0 0 0 0 0 0 0 16-3584
+chrM 9012 0 0 0 0 0 0 0 16-3584
+chrM 9013 0 0 0 0 0 0 0 16-3584
+chrM 9014 0 0 0 0 0 0 0 16-3584
+chrM 9015 0 0 0 0 0 0 0 16-3584
+chrM 9016 0 0 0 0 0 0 0 16-3584
+chrM 9017 0 0 0 0 0 0 0 16-3584
+chrM 9018 0 0 0 0 0 0 0 16-3584
+chrM 9019 0 0 0 0 0 0 0 16-3584
+chrM 9020 0 0 0 0 0 0 0 16-3584
+chrM 9021 0 0 0 0 0 0 0 16-3584
+chrM 9022 0 0 0 0 0 0 0 16-3584
+chrM 9023 0 0 0 0 0 0 0 16-3584
+chrM 9024 0 0 0 0 0 0 0 16-3584
+chrM 9025 0 0 0 0 0 0 0 16-3584
+chrM 9026 0 0 0 0 0 0 0 16-3584
+chrM 9027 2 1 1 0 0 0 0 16-3584
+chrM 9028 2 0 0 0 2 0 0 16-3584
+chrM 9029 2 2 0 0 0 0 0 16-3584
+chrM 9030 2 1 0 0 1 0 0 16-3584
+chrM 9031 2 0 0 2 0 0 0 16-3584
+chrM 9032 4 0 2 0 2 0 0 16-3584
+chrM 9033 4 2 0 2 0 0 0 16-3584
+chrM 9034 4 1 1 1 1 0 0 16-3584
+chrM 9035 4 0 1 2 1 0 0 16-3584
+chrM 9036 4 1 2 0 1 0 0 16-3584
+chrM 9037 4 1 1 1 1 0 0 16-3584
+chrM 9038 4 1 0 2 1 0 0 16-3584
+chrM 9039 4 0 2 2 0 0 0 16-3584
+chrM 9040 4 0 3 0 1 0 0 16-3584
+chrM 9041 4 0 0 1 3 0 0 16-3584
+chrM 9042 4 1 2 0 1 0 0 16-3584
+chrM 9043 4 1 0 3 0 0 0 16-3584
+chrM 9044 4 2 1 1 0 0 0 16-3584
+chrM 9045 4 0 1 2 1 0 0 16-3584
+chrM 9046 4 0 2 1 1 0 0 16-3584
+chrM 9047 4 2 2 0 0 0 0 16-3584
+chrM 9048 4 0 1 2 1 0 0 16-3584
+chrM 9049 4 0 1 0 3 0 0 16-3584
+chrM 9050 4 1 1 2 0 0 0 16-3584
+chrM 9051 4 0 0 0 4 0 0 16-3584
+chrM 9052 4 1 0 2 1 0 0 16-3584
+chrM 9053 4 2 0 1 1 0 0 16-3584
+chrM 9054 4 0 2 0 2 0 0 16-3584
+chrM 9055 4 0 2 2 0 0 0 16-3584
+chrM 9056 4 2 0 1 1 0 0 16-3584
+chrM 9057 4 0 0 1 3 0 0 16-3584
+chrM 9058 4 2 1 0 1 0 0 16-3584
+chrM 9059 4 1 1 0 2 0 0 16-3584
+chrM 9060 4 0 2 0 2 0 0 16-3584
+chrM 9061 4 1 0 2 1 0 0 16-3584
+chrM 9062 4 1 1 1 1 0 0 16-3584
+chrM 9063 4 2 1 0 1 0 0 16-3584
+chrM 9064 4 1 1 2 0 0 0 16-3584
+chrM 9065 4 0 3 1 0 0 0 16-3584
+chrM 9066 4 1 0 1 2 0 0 16-3584
+chrM 9067 4 2 0 1 1 0 0 16-3584
+chrM 9068 4 0 1 1 2 0 0 16-3584
+chrM 9069 4 1 1 0 2 0 0 16-3584
+chrM 9070 4 0 0 4 0 0 0 16-3584
+chrM 9071 4 1 1 2 0 0 0 16-3584
+chrM 9072 4 3 1 0 0 0 0 16-3584
+chrM 9073 4 2 1 1 0 0 0 16-3584
+chrM 9074 4 1 1 1 1 0 0 16-3584
+chrM 9075 2 0 0 2 0 0 0 16-3584
+chrM 9076 2 0 1 1 0 0 0 16-3584
+chrM 9077 2 0 1 0 1 0 0 16-3584
+chrM 9078 2 0 1 1 0 0 0 16-3584
+chrM 9079 2 0 1 0 1 0 0 16-3584
+chrM 9080 0 0 0 0 0 0 0 16-3584
+chrM 9081 0 0 0 0 0 0 0 16-3584
+chrM 9082 0 0 0 0 0 0 0 16-3584
+chrM 9083 0 0 0 0 0 0 0 16-3584
+chrM 9084 0 0 0 0 0 0 0 16-3584
+chrM 9085 0 0 0 0 0 0 0 16-3584
+chrM 9086 0 0 0 0 0 0 0 16-3584
+chrM 9087 0 0 0 0 0 0 0 16-3584
+chrM 9088 0 0 0 0 0 0 0 16-3584
+chrM 9089 0 0 0 0 0 0 0 16-3584
+chrM 9090 0 0 0 0 0 0 0 16-3584
+chrM 9091 0 0 0 0 0 0 0 16-3584
+chrM 9092 0 0 0 0 0 0 0 16-3584
+chrM 9093 0 0 0 0 0 0 0 16-3584
+chrM 9094 0 0 0 0 0 0 0 16-3584
+chrM 9095 0 0 0 0 0 0 0 16-3584
+chrM 9096 0 0 0 0 0 0 0 16-3584
+chrM 9097 0 0 0 0 0 0 0 16-3584
+chrM 9098 0 0 0 0 0 0 0 16-3584
+chrM 9099 0 0 0 0 0 0 0 16-3584
+chrM 9100 0 0 0 0 0 0 0 16-3584
+chrM 9101 0 0 0 0 0 0 0 16-3584
+chrM 9102 0 0 0 0 0 0 0 16-3584
+chrM 9103 0 0 0 0 0 0 0 16-3584
+chrM 9104 0 0 0 0 0 0 0 16-3584
+chrM 9105 0 0 0 0 0 0 0 16-3584
+chrM 9106 0 0 0 0 0 0 0 16-3584
+chrM 9107 0 0 0 0 0 0 0 16-3584
+chrM 9108 0 0 0 0 0 0 0 16-3584
+chrM 9109 0 0 0 0 0 0 0 16-3584
+chrM 9110 0 0 0 0 0 0 0 16-3584
+chrM 9111 0 0 0 0 0 0 0 16-3584
+chrM 9112 0 0 0 0 0 0 0 16-3584
+chrM 9113 0 0 0 0 0 0 0 16-3584
+chrM 9114 0 0 0 0 0 0 0 16-3584
+chrM 9115 0 0 0 0 0 0 0 16-3584
+chrM 9116 0 0 0 0 0 0 0 16-3584
+chrM 9117 0 0 0 0 0 0 0 16-3584
+chrM 9118 0 0 0 0 0 0 0 16-3584
+chrM 9119 0 0 0 0 0 0 0 16-3584
+chrM 9120 0 0 0 0 0 0 0 16-3584
+chrM 9121 0 0 0 0 0 0 0 16-3584
+chrM 9122 0 0 0 0 0 0 0 16-3584
+chrM 9123 0 0 0 0 0 0 0 16-3584
+chrM 9124 0 0 0 0 0 0 0 16-3584
+chrM 9125 0 0 0 0 0 0 0 16-3584
+chrM 9126 0 0 0 0 0 0 0 16-3584
+chrM 9127 0 0 0 0 0 0 0 16-3584
+chrM 9128 0 0 0 0 0 0 0 16-3584
+chrM 9129 0 0 0 0 0 0 0 16-3584
+chrM 9130 0 0 0 0 0 0 0 16-3584
+chrM 9131 0 0 0 0 0 0 0 16-3584
+chrM 9132 0 0 0 0 0 0 0 16-3584
+chrM 9133 0 0 0 0 0 0 0 16-3584
+chrM 9134 0 0 0 0 0 0 0 16-3584
+chrM 9135 0 0 0 0 0 0 0 16-3584
+chrM 9136 0 0 0 0 0 0 0 16-3584
+chrM 9137 0 0 0 0 0 0 0 16-3584
+chrM 9138 0 0 0 0 0 0 0 16-3584
+chrM 9139 0 0 0 0 0 0 0 16-3584
+chrM 9140 0 0 0 0 0 0 0 16-3584
+chrM 9141 0 0 0 0 0 0 0 16-3584
+chrM 9142 0 0 0 0 0 0 0 16-3584
+chrM 9143 0 0 0 0 0 0 0 16-3584
+chrM 9144 0 0 0 0 0 0 0 16-3584
+chrM 9145 0 0 0 0 0 0 0 16-3584
+chrM 9146 0 0 0 0 0 0 0 16-3584
+chrM 9147 0 0 0 0 0 0 0 16-3584
+chrM 9148 0 0 0 0 0 0 0 16-3584
+chrM 9149 0 0 0 0 0 0 0 16-3584
+chrM 9150 0 0 0 0 0 0 0 16-3584
+chrM 9151 0 0 0 0 0 0 0 16-3584
+chrM 9152 0 0 0 0 0 0 0 16-3584
+chrM 9153 0 0 0 0 0 0 0 16-3584
+chrM 9154 0 0 0 0 0 0 0 16-3584
+chrM 9155 0 0 0 0 0 0 0 16-3584
+chrM 9156 0 0 0 0 0 0 0 16-3584
+chrM 9157 0 0 0 0 0 0 0 16-3584
+chrM 9158 0 0 0 0 0 0 0 16-3584
+chrM 9159 0 0 0 0 0 0 0 16-3584
+chrM 9160 0 0 0 0 0 0 0 16-3584
+chrM 9161 0 0 0 0 0 0 0 16-3584
+chrM 9162 0 0 0 0 0 0 0 16-3584
+chrM 9163 0 0 0 0 0 0 0 16-3584
+chrM 9164 0 0 0 0 0 0 0 16-3584
+chrM 9165 0 0 0 0 0 0 0 16-3584
+chrM 9166 0 0 0 0 0 0 0 16-3584
+chrM 9167 0 0 0 0 0 0 0 16-3584
+chrM 9168 0 0 0 0 0 0 0 16-3584
+chrM 9169 0 0 0 0 0 0 0 16-3584
+chrM 9170 0 0 0 0 0 0 0 16-3584
+chrM 9171 0 0 0 0 0 0 0 16-3584
+chrM 9172 0 0 0 0 0 0 0 16-3584
+chrM 9173 0 0 0 0 0 0 0 16-3584
+chrM 9174 0 0 0 0 0 0 0 16-3584
+chrM 9175 0 0 0 0 0 0 0 16-3584
+chrM 9176 0 0 0 0 0 0 0 16-3584
+chrM 9177 0 0 0 0 0 0 0 16-3584
+chrM 9178 0 0 0 0 0 0 0 16-3584
+chrM 9179 0 0 0 0 0 0 0 16-3584
+chrM 9180 0 0 0 0 0 0 0 16-3584
+chrM 9181 0 0 0 0 0 0 0 16-3584
+chrM 9182 0 0 0 0 0 0 0 16-3584
+chrM 9183 0 0 0 0 0 0 0 16-3584
+chrM 9184 0 0 0 0 0 0 0 16-3584
+chrM 9185 0 0 0 0 0 0 0 16-3584
+chrM 9186 0 0 0 0 0 0 0 16-3584
+chrM 9187 0 0 0 0 0 0 0 16-3584
+chrM 9188 0 0 0 0 0 0 0 16-3584
+chrM 9189 0 0 0 0 0 0 0 16-3584
+chrM 9190 0 0 0 0 0 0 0 16-3584
+chrM 9191 0 0 0 0 0 0 0 16-3584
+chrM 9192 0 0 0 0 0 0 0 16-3584
+chrM 9193 0 0 0 0 0 0 0 16-3584
+chrM 9194 0 0 0 0 0 0 0 16-3584
+chrM 9195 0 0 0 0 0 0 0 16-3584
+chrM 9196 0 0 0 0 0 0 0 16-3584
+chrM 9197 0 0 0 0 0 0 0 16-3584
+chrM 9198 0 0 0 0 0 0 0 16-3584
+chrM 9199 0 0 0 0 0 0 0 16-3584
+chrM 9200 0 0 0 0 0 0 0 16-3584
+chrM 9201 0 0 0 0 0 0 0 16-3584
+chrM 9202 0 0 0 0 0 0 0 16-3584
+chrM 9203 0 0 0 0 0 0 0 16-3584
+chrM 9204 0 0 0 0 0 0 0 16-3584
+chrM 9205 0 0 0 0 0 0 0 16-3584
+chrM 9206 0 0 0 0 0 0 0 16-3584
+chrM 9207 0 0 0 0 0 0 0 16-3584
+chrM 9208 0 0 0 0 0 0 0 16-3584
+chrM 9209 0 0 0 0 0 0 0 16-3584
+chrM 9210 0 0 0 0 0 0 0 16-3584
+chrM 9211 0 0 0 0 0 0 0 16-3584
+chrM 9212 0 0 0 0 0 0 0 16-3584
+chrM 9213 0 0 0 0 0 0 0 16-3584
+chrM 9214 0 0 0 0 0 0 0 16-3584
+chrM 9215 0 0 0 0 0 0 0 16-3584
+chrM 9216 0 0 0 0 0 0 0 16-3584
+chrM 9217 0 0 0 0 0 0 0 16-3584
+chrM 9218 0 0 0 0 0 0 0 16-3584
+chrM 9219 0 0 0 0 0 0 0 16-3584
+chrM 9220 0 0 0 0 0 0 0 16-3584
+chrM 9221 0 0 0 0 0 0 0 16-3584
+chrM 9222 0 0 0 0 0 0 0 16-3584
+chrM 9223 0 0 0 0 0 0 0 16-3584
+chrM 9224 0 0 0 0 0 0 0 16-3584
+chrM 9225 0 0 0 0 0 0 0 16-3584
+chrM 9226 0 0 0 0 0 0 0 16-3584
+chrM 9227 0 0 0 0 0 0 0 16-3584
+chrM 9228 0 0 0 0 0 0 0 16-3584
+chrM 9229 0 0 0 0 0 0 0 16-3584
+chrM 9230 0 0 0 0 0 0 0 16-3584
+chrM 9231 0 0 0 0 0 0 0 16-3584
+chrM 9232 0 0 0 0 0 0 0 16-3584
+chrM 9233 0 0 0 0 0 0 0 16-3584
+chrM 9234 0 0 0 0 0 0 0 16-3584
+chrM 9235 0 0 0 0 0 0 0 16-3584
+chrM 9236 0 0 0 0 0 0 0 16-3584
+chrM 9237 0 0 0 0 0 0 0 16-3584
+chrM 9238 0 0 0 0 0 0 0 16-3584
+chrM 9239 0 0 0 0 0 0 0 16-3584
+chrM 9240 0 0 0 0 0 0 0 16-3584
+chrM 9241 0 0 0 0 0 0 0 16-3584
+chrM 9242 0 0 0 0 0 0 0 16-3584
+chrM 9243 0 0 0 0 0 0 0 16-3584
+chrM 9244 0 0 0 0 0 0 0 16-3584
+chrM 9245 0 0 0 0 0 0 0 16-3584
+chrM 9246 0 0 0 0 0 0 0 16-3584
+chrM 9247 0 0 0 0 0 0 0 16-3584
+chrM 9248 0 0 0 0 0 0 0 16-3584
+chrM 9249 0 0 0 0 0 0 0 16-3584
+chrM 9250 0 0 0 0 0 0 0 16-3584
+chrM 9251 0 0 0 0 0 0 0 16-3584
+chrM 9252 0 0 0 0 0 0 0 16-3584
+chrM 9253 0 0 0 0 0 0 0 16-3584
+chrM 9254 0 0 0 0 0 0 0 16-3584
+chrM 9255 0 0 0 0 0 0 0 16-3584
+chrM 9256 0 0 0 0 0 0 0 16-3584
+chrM 9257 0 0 0 0 0 0 0 16-3584
+chrM 9258 0 0 0 0 0 0 0 16-3584
+chrM 9259 0 0 0 0 0 0 0 16-3584
+chrM 9260 0 0 0 0 0 0 0 16-3584
+chrM 9261 0 0 0 0 0 0 0 16-3584
+chrM 9262 0 0 0 0 0 0 0 16-3584
+chrM 9263 0 0 0 0 0 0 0 16-3584
+chrM 9264 0 0 0 0 0 0 0 16-3584
+chrM 9265 0 0 0 0 0 0 0 16-3584
+chrM 9266 0 0 0 0 0 0 0 16-3584
+chrM 9267 0 0 0 0 0 0 0 16-3584
+chrM 9268 0 0 0 0 0 0 0 16-3584
+chrM 9269 0 0 0 0 0 0 0 16-3584
+chrM 9270 0 0 0 0 0 0 0 16-3584
+chrM 9271 0 0 0 0 0 0 0 16-3584
+chrM 9272 0 0 0 0 0 0 0 16-3584
+chrM 9273 0 0 0 0 0 0 0 16-3584
+chrM 9274 0 0 0 0 0 0 0 16-3584
+chrM 9275 0 0 0 0 0 0 0 16-3584
+chrM 9276 0 0 0 0 0 0 0 16-3584
+chrM 9277 0 0 0 0 0 0 0 16-3584
+chrM 9278 2 1 0 1 0 0 0 16-3584
+chrM 9279 2 0 2 0 0 0 0 16-3584
+chrM 9280 2 0 1 0 1 0 0 16-3584
+chrM 9281 2 0 2 0 0 0 0 16-3584
+chrM 9282 2 0 0 2 0 0 0 16-3584
+chrM 9283 2 0 1 1 0 0 0 16-3584
+chrM 9284 2 0 0 1 1 0 0 16-3584
+chrM 9285 2 0 0 0 2 0 0 16-3584
+chrM 9286 2 2 0 0 0 0 0 16-3584
+chrM 9287 2 1 1 0 0 0 0 16-3584
+chrM 9288 2 0 1 1 0 0 0 16-3584
+chrM 9289 2 1 0 0 1 0 0 16-3584
+chrM 9290 2 0 0 0 2 0 0 16-3584
+chrM 9291 2 1 0 0 1 0 0 16-3584
+chrM 9292 2 1 1 0 0 0 0 16-3584
+chrM 9293 2 1 0 1 0 0 0 16-3584
+chrM 9294 2 2 0 0 0 0 0 16-3584
+chrM 9295 2 1 0 1 0 0 0 16-3584
+chrM 9296 2 1 0 1 0 0 0 16-3584
+chrM 9297 2 1 0 1 0 0 0 16-3584
+chrM 9298 2 1 0 0 1 0 0 16-3584
+chrM 9299 2 1 0 1 0 0 0 16-3584
+chrM 9300 2 1 1 0 0 0 0 16-3584
+chrM 9301 2 1 0 0 1 0 0 16-3584
+chrM 9302 2 0 1 0 1 0 0 16-3584
+chrM 9303 2 0 1 0 1 0 0 16-3584
+chrM 9304 2 1 0 0 1 0 0 16-3584
+chrM 9305 2 0 1 0 1 0 0 16-3584
+chrM 9306 2 0 1 0 1 0 0 16-3584
+chrM 9307 2 0 1 1 0 0 0 16-3584
+chrM 9308 2 1 0 0 1 0 0 16-3584
+chrM 9309 2 1 0 1 0 0 0 16-3584
+chrM 9310 2 2 0 0 0 0 0 16-3584
+chrM 9311 2 0 1 1 0 0 0 16-3584
+chrM 9312 2 1 0 0 1 0 0 16-3584
+chrM 9313 2 0 1 1 0 0 0 16-3584
+chrM 9314 2 0 2 0 0 0 0 16-3584
+chrM 9315 2 1 1 0 0 0 0 16-3584
+chrM 9316 2 0 1 1 0 0 0 16-3584
+chrM 9317 2 0 1 0 1 0 0 16-3584
+chrM 9318 2 1 0 1 0 0 0 16-3584
+chrM 9319 2 1 0 1 0 0 0 16-3584
+chrM 9320 2 2 0 0 0 0 0 16-3584
+chrM 9321 2 1 1 0 0 0 0 16-3584
+chrM 9322 4 1 0 0 3 0 0 16-3584
+chrM 9323 4 1 1 1 1 0 0 16-3584
+chrM 9324 4 1 0 1 2 0 0 16-3584
+chrM 9325 4 0 1 3 0 0 0 16-3584
+chrM 9326 4 2 1 1 0 0 0 16-3584
+chrM 9327 4 2 0 2 0 0 0 16-3584
+chrM 9328 4 1 0 1 2 0 0 16-3584
+chrM 9329 4 1 2 1 0 0 0 16-3584
+chrM 9330 4 2 1 0 1 0 0 16-3584
+chrM 9331 4 2 1 1 0 0 0 16-3584
+chrM 9332 4 2 1 0 1 0 0 16-3584
+chrM 9333 4 0 1 1 2 0 0 16-3584
+chrM 9334 4 1 2 0 1 0 0 16-3584
+chrM 9335 4 0 1 0 3 0 0 16-3584
+chrM 9336 4 1 0 1 2 0 0 16-3584
+chrM 9337 4 1 0 1 2 0 0 16-3584
+chrM 9338 4 2 0 0 2 0 0 16-3584
+chrM 9339 4 2 0 1 1 0 0 16-3584
+chrM 9340 4 3 0 1 0 0 0 16-3584
+chrM 9341 4 1 1 1 1 0 0 16-3584
+chrM 9342 4 0 1 0 3 0 0 16-3584
+chrM 9343 4 0 1 1 2 0 0 16-3584
+chrM 9344 4 0 1 2 1 0 0 16-3584
+chrM 9345 4 2 1 0 1 0 0 16-3584
+chrM 9346 4 1 3 0 0 0 0 16-3584
+chrM 9347 4 1 1 0 2 0 0 16-3584
+chrM 9348 4 2 1 1 0 0 0 16-3584
+chrM 9349 4 2 1 1 0 0 0 16-3584
+chrM 9350 4 0 0 2 2 0 0 16-3584
+chrM 9351 4 0 2 0 2 0 0 16-3584
+chrM 9352 4 1 1 2 0 0 0 16-3584
+chrM 9353 4 1 0 2 1 0 0 16-3584
+chrM 9354 4 1 0 2 1 0 0 16-3584
+chrM 9355 4 4 0 0 0 0 0 16-3584
+chrM 9356 4 2 0 1 1 0 0 16-3584
+chrM 9357 4 0 0 1 3 0 0 16-3584
+chrM 9358 4 2 1 0 1 0 0 16-3584
+chrM 9359 4 2 2 0 0 0 0 16-3584
+chrM 9360 4 2 1 0 1 0 0 16-3584
+chrM 9361 4 0 2 2 0 0 0 16-3584
+chrM 9362 4 1 1 0 2 0 0 16-3584
+chrM 9363 4 1 1 0 2 0 0 16-3584
+chrM 9364 4 2 0 1 1 0 0 16-3584
+chrM 9365 4 1 2 0 1 0 0 16-3584
+chrM 9366 4 1 2 1 0 0 0 16-3584
+chrM 9367 4 0 0 1 3 0 0 16-3584
+chrM 9368 4 3 0 1 0 0 0 16-3584
+chrM 9369 4 0 1 1 2 0 0 16-3584
+chrM 9370 4 0 0 3 1 0 0 16-3584
+chrM 9371 4 0 2 1 1 0 0 16-3584
+chrM 9372 4 1 2 1 0 0 0 16-3584
+chrM 9373 4 1 1 1 1 0 0 16-3584
+chrM 9374 4 1 0 1 2 0 0 16-3584
+chrM 9375 4 2 0 0 2 0 0 16-3584
+chrM 9376 4 0 1 3 0 0 0 16-3584
+chrM 9377 4 0 1 0 3 0 0 16-3584
+chrM 9378 4 1 1 0 2 0 0 16-3584
+chrM 9379 4 0 1 2 1 0 0 16-3584
+chrM 9380 4 2 1 0 1 0 0 16-3584
+chrM 9381 4 2 2 0 0 0 0 16-3584
+chrM 9382 4 0 1 1 2 0 0 16-3584
+chrM 9383 4 0 0 3 1 0 0 16-3584
+chrM 9384 4 0 1 2 1 0 0 16-3584
+chrM 9385 4 2 0 0 2 0 0 16-3584
+chrM 9386 4 2 0 2 0 0 0 16-3584
+chrM 9387 4 0 1 2 1 0 0 16-3584
+chrM 9388 4 1 0 1 2 0 0 16-3584
+chrM 9389 4 1 1 2 0 0 0 16-3584
+chrM 9390 4 1 1 1 1 0 0 16-3584
+chrM 9391 4 2 0 1 1 0 0 16-3584
+chrM 9392 4 0 1 1 2 0 0 16-3584
+chrM 9393 4 3 0 0 1 0 0 16-3584
+chrM 9394 4 1 1 1 1 0 0 16-3584
+chrM 9395 4 0 0 3 1 0 0 16-3584
+chrM 9396 4 2 1 0 1 0 0 16-3584
+chrM 9397 4 0 0 2 2 0 0 16-3584
+chrM 9398 4 2 1 1 0 0 0 16-3584
+chrM 9399 4 0 2 0 2 0 0 16-3584
+chrM 9400 4 1 2 0 1 0 0 16-3584
+chrM 9401 4 0 1 2 1 0 0 16-3584
+chrM 9402 4 1 2 0 1 0 0 16-3584
+chrM 9403 4 1 1 0 2 0 0 16-3584
+chrM 9404 4 2 2 0 0 0 0 16-3584
+chrM 9405 4 1 1 0 2 0 0 16-3584
+chrM 9406 4 0 1 3 0 0 0 16-3584
+chrM 9407 4 0 1 1 2 0 0 16-3584
+chrM 9408 4 1 2 0 1 0 0 16-3584
+chrM 9409 4 1 1 1 1 0 0 16-3584
+chrM 9410 4 1 1 1 1 0 0 16-3584
+chrM 9411 4 1 1 2 0 0 0 16-3584
+chrM 9412 4 1 0 1 2 0 0 16-3584
+chrM 9413 4 3 0 0 1 0 0 16-3584
+chrM 9414 4 1 2 0 1 0 0 16-3584
+chrM 9415 4 1 1 1 1 0 0 16-3584
+chrM 9416 4 1 0 2 1 0 0 16-3584
+chrM 9417 4 1 0 1 2 0 0 16-3584
+chrM 9418 4 2 0 1 1 0 0 16-3584
+chrM 9419 4 2 1 1 0 0 0 16-3584
+chrM 9420 4 1 2 0 1 0 0 16-3584
+chrM 9421 4 0 2 2 0 0 0 16-3584
+chrM 9422 4 0 0 4 0 0 0 16-3584
+chrM 9423 4 0 1 1 2 0 0 16-3584
+chrM 9424 2 1 0 0 1 0 0 16-3584
+chrM 9425 2 1 1 0 0 0 0 16-3584
+chrM 9426 2 1 1 0 0 0 0 16-3584
+chrM 9427 2 2 0 0 0 0 0 16-3584
+chrM 9428 2 0 1 1 0 0 0 16-3584
+chrM 9429 2 0 0 1 1 0 0 16-3584
+chrM 9430 2 2 0 0 0 0 0 16-3584
+chrM 9431 2 2 0 0 0 0 0 16-3584
+chrM 9432 2 0 0 1 1 0 0 16-3584
+chrM 9433 2 0 1 1 0 0 0 16-3584
+chrM 9434 2 0 0 0 2 0 0 16-3584
+chrM 9435 2 1 0 0 1 0 0 16-3584
+chrM 9436 2 0 1 1 0 0 0 16-3584
+chrM 9437 2 0 0 1 1 0 0 16-3584
+chrM 9438 2 0 0 0 2 0 0 16-3584
+chrM 9439 2 0 1 0 1 0 0 16-3584
+chrM 9440 2 0 0 1 1 0 0 16-3584
+chrM 9441 2 0 0 1 1 0 0 16-3584
+chrM 9442 2 0 1 0 1 0 0 16-3584
+chrM 9443 2 0 1 1 0 0 0 16-3584
+chrM 9444 2 0 0 1 1 0 0 16-3584
+chrM 9445 2 1 0 1 0 0 0 16-3584
+chrM 9446 2 1 0 1 0 0 0 16-3584
+chrM 9447 2 0 1 1 0 0 0 16-3584
+chrM 9448 2 0 0 0 2 0 0 16-3584
+chrM 9449 2 1 0 0 1 0 0 16-3584
+chrM 9450 2 1 0 1 0 0 0 16-3584
+chrM 9451 2 1 0 0 1 0 0 16-3584
+chrM 9452 2 0 1 1 0 0 0 16-3584
+chrM 9453 2 1 1 0 0 0 0 16-3584
+chrM 9454 2 1 1 0 0 0 0 16-3584
+chrM 9455 2 1 1 0 0 0 0 16-3584
+chrM 9456 2 2 0 0 0 0 0 16-3584
+chrM 9457 2 1 0 0 1 0 0 16-3584
+chrM 9458 2 2 0 0 0 0 0 16-3584
+chrM 9459 2 0 0 1 1 0 0 16-3584
+chrM 9460 2 0 1 0 1 0 0 16-3584
+chrM 9461 2 0 1 1 0 0 0 16-3584
+chrM 9462 2 0 1 1 0 0 0 16-3584
+chrM 9463 2 2 0 0 0 0 0 16-3584
+chrM 9464 2 1 1 0 0 0 0 16-3584
+chrM 9465 2 1 1 0 0 0 0 16-3584
+chrM 9466 0 0 0 0 0 0 0 16-3584
+chrM 9467 0 0 0 0 0 0 0 16-3584
+chrM 9468 0 0 0 0 0 0 0 16-3584
+chrM 9469 0 0 0 0 0 0 0 16-3584
+chrM 9470 0 0 0 0 0 0 0 16-3584
+chrM 9471 0 0 0 0 0 0 0 16-3584
+chrM 9472 0 0 0 0 0 0 0 16-3584
+chrM 9473 0 0 0 0 0 0 0 16-3584
+chrM 9474 0 0 0 0 0 0 0 16-3584
+chrM 9475 0 0 0 0 0 0 0 16-3584
+chrM 9476 0 0 0 0 0 0 0 16-3584
+chrM 9477 0 0 0 0 0 0 0 16-3584
+chrM 9478 0 0 0 0 0 0 0 16-3584
+chrM 9479 0 0 0 0 0 0 0 16-3584
+chrM 9480 0 0 0 0 0 0 0 16-3584
+chrM 9481 0 0 0 0 0 0 0 16-3584
+chrM 9482 0 0 0 0 0 0 0 16-3584
+chrM 9483 0 0 0 0 0 0 0 16-3584
+chrM 9484 0 0 0 0 0 0 0 16-3584
+chrM 9485 0 0 0 0 0 0 0 16-3584
+chrM 9486 0 0 0 0 0 0 0 16-3584
+chrM 9487 0 0 0 0 0 0 0 16-3584
+chrM 9488 0 0 0 0 0 0 0 16-3584
+chrM 9489 0 0 0 0 0 0 0 16-3584
+chrM 9490 0 0 0 0 0 0 0 16-3584
+chrM 9491 0 0 0 0 0 0 0 16-3584
+chrM 9492 0 0 0 0 0 0 0 16-3584
+chrM 9493 0 0 0 0 0 0 0 16-3584
+chrM 9494 0 0 0 0 0 0 0 16-3584
+chrM 9495 0 0 0 0 0 0 0 16-3584
+chrM 9496 0 0 0 0 0 0 0 16-3584
+chrM 9497 0 0 0 0 0 0 0 16-3584
+chrM 9498 0 0 0 0 0 0 0 16-3584
+chrM 9499 0 0 0 0 0 0 0 16-3584
+chrM 9500 0 0 0 0 0 0 0 16-3584
+chrM 9501 0 0 0 0 0 0 0 16-3584
+chrM 9502 0 0 0 0 0 0 0 16-3584
+chrM 9503 0 0 0 0 0 0 0 16-3584
+chrM 9504 0 0 0 0 0 0 0 16-3584
+chrM 9505 0 0 0 0 0 0 0 16-3584
+chrM 9506 0 0 0 0 0 0 0 16-3584
+chrM 9507 0 0 0 0 0 0 0 16-3584
+chrM 9508 0 0 0 0 0 0 0 16-3584
+chrM 9509 0 0 0 0 0 0 0 16-3584
+chrM 9510 0 0 0 0 0 0 0 16-3584
+chrM 9511 0 0 0 0 0 0 0 16-3584
+chrM 9512 0 0 0 0 0 0 0 16-3584
+chrM 9513 0 0 0 0 0 0 0 16-3584
+chrM 9514 0 0 0 0 0 0 0 16-3584
+chrM 9515 0 0 0 0 0 0 0 16-3584
+chrM 9516 0 0 0 0 0 0 0 16-3584
+chrM 9517 0 0 0 0 0 0 0 16-3584
+chrM 9518 0 0 0 0 0 0 0 16-3584
+chrM 9519 0 0 0 0 0 0 0 16-3584
+chrM 9520 0 0 0 0 0 0 0 16-3584
+chrM 9521 0 0 0 0 0 0 0 16-3584
+chrM 9522 0 0 0 0 0 0 0 16-3584
+chrM 9523 0 0 0 0 0 0 0 16-3584
+chrM 9524 0 0 0 0 0 0 0 16-3584
+chrM 9525 0 0 0 0 0 0 0 16-3584
+chrM 9526 0 0 0 0 0 0 0 16-3584
+chrM 9527 0 0 0 0 0 0 0 16-3584
+chrM 9528 0 0 0 0 0 0 0 16-3584
+chrM 9529 0 0 0 0 0 0 0 16-3584
+chrM 9530 0 0 0 0 0 0 0 16-3584
+chrM 9531 0 0 0 0 0 0 0 16-3584
+chrM 9532 0 0 0 0 0 0 0 16-3584
+chrM 9533 0 0 0 0 0 0 0 16-3584
+chrM 9534 0 0 0 0 0 0 0 16-3584
+chrM 9535 0 0 0 0 0 0 0 16-3584
+chrM 9536 0 0 0 0 0 0 0 16-3584
+chrM 9537 0 0 0 0 0 0 0 16-3584
+chrM 9538 0 0 0 0 0 0 0 16-3584
+chrM 9539 0 0 0 0 0 0 0 16-3584
+chrM 9540 0 0 0 0 0 0 0 16-3584
+chrM 9541 0 0 0 0 0 0 0 16-3584
+chrM 9542 0 0 0 0 0 0 0 16-3584
+chrM 9543 0 0 0 0 0 0 0 16-3584
+chrM 9544 0 0 0 0 0 0 0 16-3584
+chrM 9545 0 0 0 0 0 0 0 16-3584
+chrM 9546 0 0 0 0 0 0 0 16-3584
+chrM 9547 0 0 0 0 0 0 0 16-3584
+chrM 9548 0 0 0 0 0 0 0 16-3584
+chrM 9549 0 0 0 0 0 0 0 16-3584
+chrM 9550 0 0 0 0 0 0 0 16-3584
+chrM 9551 0 0 0 0 0 0 0 16-3584
+chrM 9552 0 0 0 0 0 0 0 16-3584
+chrM 9553 0 0 0 0 0 0 0 16-3584
+chrM 9554 0 0 0 0 0 0 0 16-3584
+chrM 9555 0 0 0 0 0 0 0 16-3584
+chrM 9556 0 0 0 0 0 0 0 16-3584
+chrM 9557 0 0 0 0 0 0 0 16-3584
+chrM 9558 0 0 0 0 0 0 0 16-3584
+chrM 9559 0 0 0 0 0 0 0 16-3584
+chrM 9560 0 0 0 0 0 0 0 16-3584
+chrM 9561 0 0 0 0 0 0 0 16-3584
+chrM 9562 0 0 0 0 0 0 0 16-3584
+chrM 9563 0 0 0 0 0 0 0 16-3584
+chrM 9564 0 0 0 0 0 0 0 16-3584
+chrM 9565 0 0 0 0 0 0 0 16-3584
+chrM 9566 0 0 0 0 0 0 0 16-3584
+chrM 9567 0 0 0 0 0 0 0 16-3584
+chrM 9568 0 0 0 0 0 0 0 16-3584
+chrM 9569 0 0 0 0 0 0 0 16-3584
+chrM 9570 0 0 0 0 0 0 0 16-3584
+chrM 9571 0 0 0 0 0 0 0 16-3584
+chrM 9572 0 0 0 0 0 0 0 16-3584
+chrM 9573 0 0 0 0 0 0 0 16-3584
+chrM 9574 0 0 0 0 0 0 0 16-3584
+chrM 9575 0 0 0 0 0 0 0 16-3584
+chrM 9576 0 0 0 0 0 0 0 16-3584
+chrM 9577 0 0 0 0 0 0 0 16-3584
+chrM 9578 0 0 0 0 0 0 0 16-3584
+chrM 9579 0 0 0 0 0 0 0 16-3584
+chrM 9580 0 0 0 0 0 0 0 16-3584
+chrM 9581 0 0 0 0 0 0 0 16-3584
+chrM 9582 0 0 0 0 0 0 0 16-3584
+chrM 9583 0 0 0 0 0 0 0 16-3584
+chrM 9584 0 0 0 0 0 0 0 16-3584
+chrM 9585 0 0 0 0 0 0 0 16-3584
+chrM 9586 0 0 0 0 0 0 0 16-3584
+chrM 9587 0 0 0 0 0 0 0 16-3584
+chrM 9588 0 0 0 0 0 0 0 16-3584
+chrM 9589 0 0 0 0 0 0 0 16-3584
+chrM 9590 0 0 0 0 0 0 0 16-3584
+chrM 9591 0 0 0 0 0 0 0 16-3584
+chrM 9592 0 0 0 0 0 0 0 16-3584
+chrM 9593 0 0 0 0 0 0 0 16-3584
+chrM 9594 0 0 0 0 0 0 0 16-3584
+chrM 9595 0 0 0 0 0 0 0 16-3584
+chrM 9596 0 0 0 0 0 0 0 16-3584
+chrM 9597 0 0 0 0 0 0 0 16-3584
+chrM 9598 0 0 0 0 0 0 0 16-3584
+chrM 9599 0 0 0 0 0 0 0 16-3584
+chrM 9600 0 0 0 0 0 0 0 16-3584
+chrM 9601 0 0 0 0 0 0 0 16-3584
+chrM 9602 0 0 0 0 0 0 0 16-3584
+chrM 9603 0 0 0 0 0 0 0 16-3584
+chrM 9604 0 0 0 0 0 0 0 16-3584
+chrM 9605 0 0 0 0 0 0 0 16-3584
+chrM 9606 0 0 0 0 0 0 0 16-3584
+chrM 9607 0 0 0 0 0 0 0 16-3584
+chrM 9608 0 0 0 0 0 0 0 16-3584
+chrM 9609 0 0 0 0 0 0 0 16-3584
+chrM 9610 0 0 0 0 0 0 0 16-3584
+chrM 9611 0 0 0 0 0 0 0 16-3584
+chrM 9612 0 0 0 0 0 0 0 16-3584
+chrM 9613 0 0 0 0 0 0 0 16-3584
+chrM 9614 0 0 0 0 0 0 0 16-3584
+chrM 9615 0 0 0 0 0 0 0 16-3584
+chrM 9616 0 0 0 0 0 0 0 16-3584
+chrM 9617 0 0 0 0 0 0 0 16-3584
+chrM 9618 0 0 0 0 0 0 0 16-3584
+chrM 9619 0 0 0 0 0 0 0 16-3584
+chrM 9620 0 0 0 0 0 0 0 16-3584
+chrM 9621 0 0 0 0 0 0 0 16-3584
+chrM 9622 0 0 0 0 0 0 0 16-3584
+chrM 9623 0 0 0 0 0 0 0 16-3584
+chrM 9624 0 0 0 0 0 0 0 16-3584
+chrM 9625 0 0 0 0 0 0 0 16-3584
+chrM 9626 0 0 0 0 0 0 0 16-3584
+chrM 9627 0 0 0 0 0 0 0 16-3584
+chrM 9628 0 0 0 0 0 0 0 16-3584
+chrM 9629 0 0 0 0 0 0 0 16-3584
+chrM 9630 0 0 0 0 0 0 0 16-3584
+chrM 9631 0 0 0 0 0 0 0 16-3584
+chrM 9632 0 0 0 0 0 0 0 16-3584
+chrM 9633 0 0 0 0 0 0 0 16-3584
+chrM 9634 0 0 0 0 0 0 0 16-3584
+chrM 9635 0 0 0 0 0 0 0 16-3584
+chrM 9636 0 0 0 0 0 0 0 16-3584
+chrM 9637 0 0 0 0 0 0 0 16-3584
+chrM 9638 0 0 0 0 0 0 0 16-3584
+chrM 9639 0 0 0 0 0 0 0 16-3584
+chrM 9640 0 0 0 0 0 0 0 16-3584
+chrM 9641 0 0 0 0 0 0 0 16-3584
+chrM 9642 0 0 0 0 0 0 0 16-3584
+chrM 9643 0 0 0 0 0 0 0 16-3584
+chrM 9644 0 0 0 0 0 0 0 16-3584
+chrM 9645 0 0 0 0 0 0 0 16-3584
+chrM 9646 0 0 0 0 0 0 0 16-3584
+chrM 9647 0 0 0 0 0 0 0 16-3584
+chrM 9648 0 0 0 0 0 0 0 16-3584
+chrM 9649 0 0 0 0 0 0 0 16-3584
+chrM 9650 0 0 0 0 0 0 0 16-3584
+chrM 9651 0 0 0 0 0 0 0 16-3584
+chrM 9652 0 0 0 0 0 0 0 16-3584
+chrM 9653 0 0 0 0 0 0 0 16-3584
+chrM 9654 0 0 0 0 0 0 0 16-3584
+chrM 9655 0 0 0 0 0 0 0 16-3584
+chrM 9656 0 0 0 0 0 0 0 16-3584
+chrM 9657 0 0 0 0 0 0 0 16-3584
+chrM 9658 0 0 0 0 0 0 0 16-3584
+chrM 9659 0 0 0 0 0 0 0 16-3584
+chrM 9660 0 0 0 0 0 0 0 16-3584
+chrM 9661 0 0 0 0 0 0 0 16-3584
+chrM 9662 0 0 0 0 0 0 0 16-3584
+chrM 9663 0 0 0 0 0 0 0 16-3584
+chrM 9664 0 0 0 0 0 0 0 16-3584
+chrM 9665 0 0 0 0 0 0 0 16-3584
+chrM 9666 0 0 0 0 0 0 0 16-3584
+chrM 9667 0 0 0 0 0 0 0 16-3584
+chrM 9668 0 0 0 0 0 0 0 16-3584
+chrM 9669 0 0 0 0 0 0 0 16-3584
+chrM 9670 0 0 0 0 0 0 0 16-3584
+chrM 9671 0 0 0 0 0 0 0 16-3584
+chrM 9672 0 0 0 0 0 0 0 16-3584
+chrM 9673 0 0 0 0 0 0 0 16-3584
+chrM 9674 0 0 0 0 0 0 0 16-3584
+chrM 9675 0 0 0 0 0 0 0 16-3584
+chrM 9676 0 0 0 0 0 0 0 16-3584
+chrM 9677 0 0 0 0 0 0 0 16-3584
+chrM 9678 0 0 0 0 0 0 0 16-3584
+chrM 9679 0 0 0 0 0 0 0 16-3584
+chrM 9680 0 0 0 0 0 0 0 16-3584
+chrM 9681 0 0 0 0 0 0 0 16-3584
+chrM 9682 0 0 0 0 0 0 0 16-3584
+chrM 9683 0 0 0 0 0 0 0 16-3584
+chrM 9684 0 0 0 0 0 0 0 16-3584
+chrM 9685 0 0 0 0 0 0 0 16-3584
+chrM 9686 0 0 0 0 0 0 0 16-3584
+chrM 9687 0 0 0 0 0 0 0 16-3584
+chrM 9688 0 0 0 0 0 0 0 16-3584
+chrM 9689 0 0 0 0 0 0 0 16-3584
+chrM 9690 0 0 0 0 0 0 0 16-3584
+chrM 9691 0 0 0 0 0 0 0 16-3584
+chrM 9692 0 0 0 0 0 0 0 16-3584
+chrM 9693 0 0 0 0 0 0 0 16-3584
+chrM 9694 0 0 0 0 0 0 0 16-3584
+chrM 9695 0 0 0 0 0 0 0 16-3584
+chrM 9696 0 0 0 0 0 0 0 16-3584
+chrM 9697 0 0 0 0 0 0 0 16-3584
+chrM 9698 0 0 0 0 0 0 0 16-3584
+chrM 9699 0 0 0 0 0 0 0 16-3584
+chrM 9700 0 0 0 0 0 0 0 16-3584
+chrM 9701 0 0 0 0 0 0 0 16-3584
+chrM 9702 0 0 0 0 0 0 0 16-3584
+chrM 9703 0 0 0 0 0 0 0 16-3584
+chrM 9704 0 0 0 0 0 0 0 16-3584
+chrM 9705 0 0 0 0 0 0 0 16-3584
+chrM 9706 0 0 0 0 0 0 0 16-3584
+chrM 9707 0 0 0 0 0 0 0 16-3584
+chrM 9708 0 0 0 0 0 0 0 16-3584
+chrM 9709 0 0 0 0 0 0 0 16-3584
+chrM 9710 0 0 0 0 0 0 0 16-3584
+chrM 9711 0 0 0 0 0 0 0 16-3584
+chrM 9712 0 0 0 0 0 0 0 16-3584
+chrM 9713 0 0 0 0 0 0 0 16-3584
+chrM 9714 0 0 0 0 0 0 0 16-3584
+chrM 9715 0 0 0 0 0 0 0 16-3584
+chrM 9716 0 0 0 0 0 0 0 16-3584
+chrM 9717 0 0 0 0 0 0 0 16-3584
+chrM 9718 0 0 0 0 0 0 0 16-3584
+chrM 9719 0 0 0 0 0 0 0 16-3584
+chrM 9720 0 0 0 0 0 0 0 16-3584
+chrM 9721 0 0 0 0 0 0 0 16-3584
+chrM 9722 0 0 0 0 0 0 0 16-3584
+chrM 9723 0 0 0 0 0 0 0 16-3584
+chrM 9724 0 0 0 0 0 0 0 16-3584
+chrM 9725 0 0 0 0 0 0 0 16-3584
+chrM 9726 0 0 0 0 0 0 0 16-3584
+chrM 9727 0 0 0 0 0 0 0 16-3584
+chrM 9728 0 0 0 0 0 0 0 16-3584
+chrM 9729 0 0 0 0 0 0 0 16-3584
+chrM 9730 0 0 0 0 0 0 0 16-3584
+chrM 9731 0 0 0 0 0 0 0 16-3584
+chrM 9732 0 0 0 0 0 0 0 16-3584
+chrM 9733 0 0 0 0 0 0 0 16-3584
+chrM 9734 0 0 0 0 0 0 0 16-3584
+chrM 9735 0 0 0 0 0 0 0 16-3584
+chrM 9736 0 0 0 0 0 0 0 16-3584
+chrM 9737 0 0 0 0 0 0 0 16-3584
+chrM 9738 0 0 0 0 0 0 0 16-3584
+chrM 9739 0 0 0 0 0 0 0 16-3584
+chrM 9740 0 0 0 0 0 0 0 16-3584
+chrM 9741 0 0 0 0 0 0 0 16-3584
+chrM 9742 0 0 0 0 0 0 0 16-3584
+chrM 9743 0 0 0 0 0 0 0 16-3584
+chrM 9744 0 0 0 0 0 0 0 16-3584
+chrM 9745 0 0 0 0 0 0 0 16-3584
+chrM 9746 0 0 0 0 0 0 0 16-3584
+chrM 9747 0 0 0 0 0 0 0 16-3584
+chrM 9748 0 0 0 0 0 0 0 16-3584
+chrM 9749 0 0 0 0 0 0 0 16-3584
+chrM 9750 0 0 0 0 0 0 0 16-3584
+chrM 9751 0 0 0 0 0 0 0 16-3584
+chrM 9752 0 0 0 0 0 0 0 16-3584
+chrM 9753 0 0 0 0 0 0 0 16-3584
+chrM 9754 0 0 0 0 0 0 0 16-3584
+chrM 9755 0 0 0 0 0 0 0 16-3584
+chrM 9756 0 0 0 0 0 0 0 16-3584
+chrM 9757 0 0 0 0 0 0 0 16-3584
+chrM 9758 0 0 0 0 0 0 0 16-3584
+chrM 9759 0 0 0 0 0 0 0 16-3584
+chrM 9760 0 0 0 0 0 0 0 16-3584
+chrM 9761 0 0 0 0 0 0 0 16-3584
+chrM 9762 0 0 0 0 0 0 0 16-3584
+chrM 9763 0 0 0 0 0 0 0 16-3584
+chrM 9764 0 0 0 0 0 0 0 16-3584
+chrM 9765 0 0 0 0 0 0 0 16-3584
+chrM 9766 0 0 0 0 0 0 0 16-3584
+chrM 9767 0 0 0 0 0 0 0 16-3584
+chrM 9768 0 0 0 0 0 0 0 16-3584
+chrM 9769 0 0 0 0 0 0 0 16-3584
+chrM 9770 0 0 0 0 0 0 0 16-3584
+chrM 9771 0 0 0 0 0 0 0 16-3584
+chrM 9772 0 0 0 0 0 0 0 16-3584
+chrM 9773 0 0 0 0 0 0 0 16-3584
+chrM 9774 0 0 0 0 0 0 0 16-3584
+chrM 9775 0 0 0 0 0 0 0 16-3584
+chrM 9776 0 0 0 0 0 0 0 16-3584
+chrM 9777 0 0 0 0 0 0 0 16-3584
+chrM 9778 0 0 0 0 0 0 0 16-3584
+chrM 9779 0 0 0 0 0 0 0 16-3584
+chrM 9780 0 0 0 0 0 0 0 16-3584
+chrM 9781 0 0 0 0 0 0 0 16-3584
+chrM 9782 0 0 0 0 0 0 0 16-3584
+chrM 9783 0 0 0 0 0 0 0 16-3584
+chrM 9784 0 0 0 0 0 0 0 16-3584
+chrM 9785 0 0 0 0 0 0 0 16-3584
+chrM 9786 0 0 0 0 0 0 0 16-3584
+chrM 9787 0 0 0 0 0 0 0 16-3584
+chrM 9788 0 0 0 0 0 0 0 16-3584
+chrM 9789 0 0 0 0 0 0 0 16-3584
+chrM 9790 0 0 0 0 0 0 0 16-3584
+chrM 9791 0 0 0 0 0 0 0 16-3584
+chrM 9792 0 0 0 0 0 0 0 16-3584
+chrM 9793 0 0 0 0 0 0 0 16-3584
+chrM 9794 0 0 0 0 0 0 0 16-3584
+chrM 9795 0 0 0 0 0 0 0 16-3584
+chrM 9796 0 0 0 0 0 0 0 16-3584
+chrM 9797 0 0 0 0 0 0 0 16-3584
+chrM 9798 0 0 0 0 0 0 0 16-3584
+chrM 9799 0 0 0 0 0 0 0 16-3584
+chrM 9800 0 0 0 0 0 0 0 16-3584
+chrM 9801 0 0 0 0 0 0 0 16-3584
+chrM 9802 0 0 0 0 0 0 0 16-3584
+chrM 9803 0 0 0 0 0 0 0 16-3584
+chrM 9804 0 0 0 0 0 0 0 16-3584
+chrM 9805 0 0 0 0 0 0 0 16-3584
+chrM 9806 0 0 0 0 0 0 0 16-3584
+chrM 9807 0 0 0 0 0 0 0 16-3584
+chrM 9808 0 0 0 0 0 0 0 16-3584
+chrM 9809 0 0 0 0 0 0 0 16-3584
+chrM 9810 0 0 0 0 0 0 0 16-3584
+chrM 9811 0 0 0 0 0 0 0 16-3584
+chrM 9812 0 0 0 0 0 0 0 16-3584
+chrM 9813 0 0 0 0 0 0 0 16-3584
+chrM 9814 0 0 0 0 0 0 0 16-3584
+chrM 9815 0 0 0 0 0 0 0 16-3584
+chrM 9816 0 0 0 0 0 0 0 16-3584
+chrM 9817 0 0 0 0 0 0 0 16-3584
+chrM 9818 0 0 0 0 0 0 0 16-3584
+chrM 9819 0 0 0 0 0 0 0 16-3584
+chrM 9820 0 0 0 0 0 0 0 16-3584
+chrM 9821 0 0 0 0 0 0 0 16-3584
+chrM 9822 0 0 0 0 0 0 0 16-3584
+chrM 9823 0 0 0 0 0 0 0 16-3584
+chrM 9824 0 0 0 0 0 0 0 16-3584
+chrM 9825 0 0 0 0 0 0 0 16-3584
+chrM 9826 0 0 0 0 0 0 0 16-3584
+chrM 9827 0 0 0 0 0 0 0 16-3584
+chrM 9828 0 0 0 0 0 0 0 16-3584
+chrM 9829 0 0 0 0 0 0 0 16-3584
+chrM 9830 0 0 0 0 0 0 0 16-3584
+chrM 9831 0 0 0 0 0 0 0 16-3584
+chrM 9832 0 0 0 0 0 0 0 16-3584
+chrM 9833 0 0 0 0 0 0 0 16-3584
+chrM 9834 0 0 0 0 0 0 0 16-3584
+chrM 9835 0 0 0 0 0 0 0 16-3584
+chrM 9836 0 0 0 0 0 0 0 16-3584
+chrM 9837 0 0 0 0 0 0 0 16-3584
+chrM 9838 0 0 0 0 0 0 0 16-3584
+chrM 9839 0 0 0 0 0 0 0 16-3584
+chrM 9840 0 0 0 0 0 0 0 16-3584
+chrM 9841 0 0 0 0 0 0 0 16-3584
+chrM 9842 0 0 0 0 0 0 0 16-3584
+chrM 9843 0 0 0 0 0 0 0 16-3584
+chrM 9844 0 0 0 0 0 0 0 16-3584
+chrM 9845 0 0 0 0 0 0 0 16-3584
+chrM 9846 0 0 0 0 0 0 0 16-3584
+chrM 9847 0 0 0 0 0 0 0 16-3584
+chrM 9848 0 0 0 0 0 0 0 16-3584
+chrM 9849 0 0 0 0 0 0 0 16-3584
+chrM 9850 0 0 0 0 0 0 0 16-3584
+chrM 9851 0 0 0 0 0 0 0 16-3584
+chrM 9852 0 0 0 0 0 0 0 16-3584
+chrM 9853 0 0 0 0 0 0 0 16-3584
+chrM 9854 0 0 0 0 0 0 0 16-3584
+chrM 9855 0 0 0 0 0 0 0 16-3584
+chrM 9856 0 0 0 0 0 0 0 16-3584
+chrM 9857 0 0 0 0 0 0 0 16-3584
+chrM 9858 0 0 0 0 0 0 0 16-3584
+chrM 9859 0 0 0 0 0 0 0 16-3584
+chrM 9860 0 0 0 0 0 0 0 16-3584
+chrM 9861 0 0 0 0 0 0 0 16-3584
+chrM 9862 0 0 0 0 0 0 0 16-3584
+chrM 9863 0 0 0 0 0 0 0 16-3584
+chrM 9864 0 0 0 0 0 0 0 16-3584
+chrM 9865 0 0 0 0 0 0 0 16-3584
+chrM 9866 0 0 0 0 0 0 0 16-3584
+chrM 9867 0 0 0 0 0 0 0 16-3584
+chrM 9868 0 0 0 0 0 0 0 16-3584
+chrM 9869 0 0 0 0 0 0 0 16-3584
+chrM 9870 0 0 0 0 0 0 0 16-3584
+chrM 9871 0 0 0 0 0 0 0 16-3584
+chrM 9872 0 0 0 0 0 0 0 16-3584
+chrM 9873 0 0 0 0 0 0 0 16-3584
+chrM 9874 0 0 0 0 0 0 0 16-3584
+chrM 9875 0 0 0 0 0 0 0 16-3584
+chrM 9876 0 0 0 0 0 0 0 16-3584
+chrM 9877 0 0 0 0 0 0 0 16-3584
+chrM 9878 0 0 0 0 0 0 0 16-3584
+chrM 9879 0 0 0 0 0 0 0 16-3584
+chrM 9880 0 0 0 0 0 0 0 16-3584
+chrM 9881 0 0 0 0 0 0 0 16-3584
+chrM 9882 0 0 0 0 0 0 0 16-3584
+chrM 9883 0 0 0 0 0 0 0 16-3584
+chrM 9884 0 0 0 0 0 0 0 16-3584
+chrM 9885 0 0 0 0 0 0 0 16-3584
+chrM 9886 0 0 0 0 0 0 0 16-3584
+chrM 9887 0 0 0 0 0 0 0 16-3584
+chrM 9888 0 0 0 0 0 0 0 16-3584
+chrM 9889 0 0 0 0 0 0 0 16-3584
+chrM 9890 0 0 0 0 0 0 0 16-3584
+chrM 9891 0 0 0 0 0 0 0 16-3584
+chrM 9892 0 0 0 0 0 0 0 16-3584
+chrM 9893 0 0 0 0 0 0 0 16-3584
+chrM 9894 0 0 0 0 0 0 0 16-3584
+chrM 9895 0 0 0 0 0 0 0 16-3584
+chrM 9896 0 0 0 0 0 0 0 16-3584
+chrM 9897 0 0 0 0 0 0 0 16-3584
+chrM 9898 0 0 0 0 0 0 0 16-3584
+chrM 9899 0 0 0 0 0 0 0 16-3584
+chrM 9900 0 0 0 0 0 0 0 16-3584
+chrM 9901 0 0 0 0 0 0 0 16-3584
+chrM 9902 0 0 0 0 0 0 0 16-3584
+chrM 9903 0 0 0 0 0 0 0 16-3584
+chrM 9904 0 0 0 0 0 0 0 16-3584
+chrM 9905 0 0 0 0 0 0 0 16-3584
+chrM 9906 0 0 0 0 0 0 0 16-3584
+chrM 9907 0 0 0 0 0 0 0 16-3584
+chrM 9908 0 0 0 0 0 0 0 16-3584
+chrM 9909 0 0 0 0 0 0 0 16-3584
+chrM 9910 0 0 0 0 0 0 0 16-3584
+chrM 9911 0 0 0 0 0 0 0 16-3584
+chrM 9912 0 0 0 0 0 0 0 16-3584
+chrM 9913 0 0 0 0 0 0 0 16-3584
+chrM 9914 0 0 0 0 0 0 0 16-3584
+chrM 9915 0 0 0 0 0 0 0 16-3584
+chrM 9916 0 0 0 0 0 0 0 16-3584
+chrM 9917 0 0 0 0 0 0 0 16-3584
+chrM 9918 0 0 0 0 0 0 0 16-3584
+chrM 9919 0 0 0 0 0 0 0 16-3584
+chrM 9920 0 0 0 0 0 0 0 16-3584
+chrM 9921 0 0 0 0 0 0 0 16-3584
+chrM 9922 0 0 0 0 0 0 0 16-3584
+chrM 9923 0 0 0 0 0 0 0 16-3584
+chrM 9924 0 0 0 0 0 0 0 16-3584
+chrM 9925 0 0 0 0 0 0 0 16-3584
+chrM 9926 0 0 0 0 0 0 0 16-3584
+chrM 9927 0 0 0 0 0 0 0 16-3584
+chrM 9928 0 0 0 0 0 0 0 16-3584
+chrM 9929 0 0 0 0 0 0 0 16-3584
+chrM 9930 0 0 0 0 0 0 0 16-3584
+chrM 9931 0 0 0 0 0 0 0 16-3584
+chrM 9932 0 0 0 0 0 0 0 16-3584
+chrM 9933 0 0 0 0 0 0 0 16-3584
+chrM 9934 0 0 0 0 0 0 0 16-3584
+chrM 9935 0 0 0 0 0 0 0 16-3584
+chrM 9936 0 0 0 0 0 0 0 16-3584
+chrM 9937 0 0 0 0 0 0 0 16-3584
+chrM 9938 0 0 0 0 0 0 0 16-3584
+chrM 9939 0 0 0 0 0 0 0 16-3584
+chrM 9940 0 0 0 0 0 0 0 16-3584
+chrM 9941 0 0 0 0 0 0 0 16-3584
+chrM 9942 0 0 0 0 0 0 0 16-3584
+chrM 9943 0 0 0 0 0 0 0 16-3584
+chrM 9944 0 0 0 0 0 0 0 16-3584
+chrM 9945 0 0 0 0 0 0 0 16-3584
+chrM 9946 0 0 0 0 0 0 0 16-3584
+chrM 9947 0 0 0 0 0 0 0 16-3584
+chrM 9948 0 0 0 0 0 0 0 16-3584
+chrM 9949 0 0 0 0 0 0 0 16-3584
+chrM 9950 0 0 0 0 0 0 0 16-3584
+chrM 9951 0 0 0 0 0 0 0 16-3584
+chrM 9952 0 0 0 0 0 0 0 16-3584
+chrM 9953 0 0 0 0 0 0 0 16-3584
+chrM 9954 0 0 0 0 0 0 0 16-3584
+chrM 9955 0 0 0 0 0 0 0 16-3584
+chrM 9956 0 0 0 0 0 0 0 16-3584
+chrM 9957 0 0 0 0 0 0 0 16-3584
+chrM 9958 0 0 0 0 0 0 0 16-3584
+chrM 9959 0 0 0 0 0 0 0 16-3584
+chrM 9960 0 0 0 0 0 0 0 16-3584
+chrM 9961 0 0 0 0 0 0 0 16-3584
+chrM 9962 0 0 0 0 0 0 0 16-3584
+chrM 9963 0 0 0 0 0 0 0 16-3584
+chrM 9964 0 0 0 0 0 0 0 16-3584
+chrM 9965 0 0 0 0 0 0 0 16-3584
+chrM 9966 0 0 0 0 0 0 0 16-3584
+chrM 9967 0 0 0 0 0 0 0 16-3584
+chrM 9968 0 0 0 0 0 0 0 16-3584
+chrM 9969 0 0 0 0 0 0 0 16-3584
+chrM 9970 0 0 0 0 0 0 0 16-3584
+chrM 9971 0 0 0 0 0 0 0 16-3584
+chrM 9972 0 0 0 0 0 0 0 16-3584
+chrM 9973 0 0 0 0 0 0 0 16-3584
+chrM 9974 0 0 0 0 0 0 0 16-3584
+chrM 9975 0 0 0 0 0 0 0 16-3584
+chrM 9976 0 0 0 0 0 0 0 16-3584
+chrM 9977 0 0 0 0 0 0 0 16-3584
+chrM 9978 0 0 0 0 0 0 0 16-3584
+chrM 9979 0 0 0 0 0 0 0 16-3584
+chrM 9980 0 0 0 0 0 0 0 16-3584
+chrM 9981 0 0 0 0 0 0 0 16-3584
+chrM 9982 0 0 0 0 0 0 0 16-3584
+chrM 9983 0 0 0 0 0 0 0 16-3584
+chrM 9984 0 0 0 0 0 0 0 16-3584
+chrM 9985 0 0 0 0 0 0 0 16-3584
+chrM 9986 0 0 0 0 0 0 0 16-3584
+chrM 9987 0 0 0 0 0 0 0 16-3584
+chrM 9988 0 0 0 0 0 0 0 16-3584
+chrM 9989 0 0 0 0 0 0 0 16-3584
+chrM 9990 0 0 0 0 0 0 0 16-3584
+chrM 9991 0 0 0 0 0 0 0 16-3584
+chrM 9992 0 0 0 0 0 0 0 16-3584
+chrM 9993 0 0 0 0 0 0 0 16-3584
+chrM 9994 0 0 0 0 0 0 0 16-3584
+chrM 9995 0 0 0 0 0 0 0 16-3584
+chrM 9996 0 0 0 0 0 0 0 16-3584
+chrM 9997 0 0 0 0 0 0 0 16-3584
+chrM 9998 0 0 0 0 0 0 0 16-3584
+chrM 9999 0 0 0 0 0 0 0 16-3584
+chrM 10000 0 0 0 0 0 0 0 16-3584
+chrM 10001 0 0 0 0 0 0 0 16-3584
+chrM 10002 0 0 0 0 0 0 0 16-3584
+chrM 10003 0 0 0 0 0 0 0 16-3584
+chrM 10004 0 0 0 0 0 0 0 16-3584
+chrM 10005 0 0 0 0 0 0 0 16-3584
+chrM 10006 0 0 0 0 0 0 0 16-3584
+chrM 10007 0 0 0 0 0 0 0 16-3584
+chrM 10008 0 0 0 0 0 0 0 16-3584
+chrM 10009 0 0 0 0 0 0 0 16-3584
+chrM 10010 0 0 0 0 0 0 0 16-3584
+chrM 10011 0 0 0 0 0 0 0 16-3584
+chrM 10012 0 0 0 0 0 0 0 16-3584
+chrM 10013 0 0 0 0 0 0 0 16-3584
+chrM 10014 0 0 0 0 0 0 0 16-3584
+chrM 10015 0 0 0 0 0 0 0 16-3584
+chrM 10016 0 0 0 0 0 0 0 16-3584
+chrM 10017 0 0 0 0 0 0 0 16-3584
+chrM 10018 0 0 0 0 0 0 0 16-3584
+chrM 10019 0 0 0 0 0 0 0 16-3584
+chrM 10020 0 0 0 0 0 0 0 16-3584
+chrM 10021 0 0 0 0 0 0 0 16-3584
+chrM 10022 0 0 0 0 0 0 0 16-3584
+chrM 10023 0 0 0 0 0 0 0 16-3584
+chrM 10024 0 0 0 0 0 0 0 16-3584
+chrM 10025 0 0 0 0 0 0 0 16-3584
+chrM 10026 0 0 0 0 0 0 0 16-3584
+chrM 10027 0 0 0 0 0 0 0 16-3584
+chrM 10028 0 0 0 0 0 0 0 16-3584
+chrM 10029 0 0 0 0 0 0 0 16-3584
+chrM 10030 0 0 0 0 0 0 0 16-3584
+chrM 10031 0 0 0 0 0 0 0 16-3584
+chrM 10032 0 0 0 0 0 0 0 16-3584
+chrM 10033 0 0 0 0 0 0 0 16-3584
+chrM 10034 0 0 0 0 0 0 0 16-3584
+chrM 10035 0 0 0 0 0 0 0 16-3584
+chrM 10036 0 0 0 0 0 0 0 16-3584
+chrM 10037 0 0 0 0 0 0 0 16-3584
+chrM 10038 0 0 0 0 0 0 0 16-3584
+chrM 10039 0 0 0 0 0 0 0 16-3584
+chrM 10040 0 0 0 0 0 0 0 16-3584
+chrM 10041 0 0 0 0 0 0 0 16-3584
+chrM 10042 0 0 0 0 0 0 0 16-3584
+chrM 10043 0 0 0 0 0 0 0 16-3584
+chrM 10044 0 0 0 0 0 0 0 16-3584
+chrM 10045 0 0 0 0 0 0 0 16-3584
+chrM 10046 0 0 0 0 0 0 0 16-3584
+chrM 10047 0 0 0 0 0 0 0 16-3584
+chrM 10048 0 0 0 0 0 0 0 16-3584
+chrM 10049 0 0 0 0 0 0 0 16-3584
+chrM 10050 0 0 0 0 0 0 0 16-3584
+chrM 10051 0 0 0 0 0 0 0 16-3584
+chrM 10052 0 0 0 0 0 0 0 16-3584
+chrM 10053 0 0 0 0 0 0 0 16-3584
+chrM 10054 0 0 0 0 0 0 0 16-3584
+chrM 10055 0 0 0 0 0 0 0 16-3584
+chrM 10056 0 0 0 0 0 0 0 16-3584
+chrM 10057 0 0 0 0 0 0 0 16-3584
+chrM 10058 0 0 0 0 0 0 0 16-3584
+chrM 10059 0 0 0 0 0 0 0 16-3584
+chrM 10060 0 0 0 0 0 0 0 16-3584
+chrM 10061 0 0 0 0 0 0 0 16-3584
+chrM 10062 0 0 0 0 0 0 0 16-3584
+chrM 10063 0 0 0 0 0 0 0 16-3584
+chrM 10064 0 0 0 0 0 0 0 16-3584
+chrM 10065 0 0 0 0 0 0 0 16-3584
+chrM 10066 0 0 0 0 0 0 0 16-3584
+chrM 10067 0 0 0 0 0 0 0 16-3584
+chrM 10068 0 0 0 0 0 0 0 16-3584
+chrM 10069 0 0 0 0 0 0 0 16-3584
+chrM 10070 0 0 0 0 0 0 0 16-3584
+chrM 10071 0 0 0 0 0 0 0 16-3584
+chrM 10072 0 0 0 0 0 0 0 16-3584
+chrM 10073 0 0 0 0 0 0 0 16-3584
+chrM 10074 0 0 0 0 0 0 0 16-3584
+chrM 10075 0 0 0 0 0 0 0 16-3584
+chrM 10076 0 0 0 0 0 0 0 16-3584
+chrM 10077 0 0 0 0 0 0 0 16-3584
+chrM 10078 0 0 0 0 0 0 0 16-3584
+chrM 10079 0 0 0 0 0 0 0 16-3584
+chrM 10080 0 0 0 0 0 0 0 16-3584
+chrM 10081 0 0 0 0 0 0 0 16-3584
+chrM 10082 0 0 0 0 0 0 0 16-3584
+chrM 10083 0 0 0 0 0 0 0 16-3584
+chrM 10084 0 0 0 0 0 0 0 16-3584
+chrM 10085 0 0 0 0 0 0 0 16-3584
+chrM 10086 0 0 0 0 0 0 0 16-3584
+chrM 10087 0 0 0 0 0 0 0 16-3584
+chrM 10088 0 0 0 0 0 0 0 16-3584
+chrM 10089 0 0 0 0 0 0 0 16-3584
+chrM 10090 0 0 0 0 0 0 0 16-3584
+chrM 10091 0 0 0 0 0 0 0 16-3584
+chrM 10092 0 0 0 0 0 0 0 16-3584
+chrM 10093 0 0 0 0 0 0 0 16-3584
+chrM 10094 0 0 0 0 0 0 0 16-3584
+chrM 10095 0 0 0 0 0 0 0 16-3584
+chrM 10096 0 0 0 0 0 0 0 16-3584
+chrM 10097 0 0 0 0 0 0 0 16-3584
+chrM 10098 0 0 0 0 0 0 0 16-3584
+chrM 10099 0 0 0 0 0 0 0 16-3584
+chrM 10100 0 0 0 0 0 0 0 16-3584
+chrM 10101 0 0 0 0 0 0 0 16-3584
+chrM 10102 0 0 0 0 0 0 0 16-3584
+chrM 10103 0 0 0 0 0 0 0 16-3584
+chrM 10104 0 0 0 0 0 0 0 16-3584
+chrM 10105 0 0 0 0 0 0 0 16-3584
+chrM 10106 0 0 0 0 0 0 0 16-3584
+chrM 10107 0 0 0 0 0 0 0 16-3584
+chrM 10108 0 0 0 0 0 0 0 16-3584
+chrM 10109 0 0 0 0 0 0 0 16-3584
+chrM 10110 0 0 0 0 0 0 0 16-3584
+chrM 10111 0 0 0 0 0 0 0 16-3584
+chrM 10112 0 0 0 0 0 0 0 16-3584
+chrM 10113 0 0 0 0 0 0 0 16-3584
+chrM 10114 0 0 0 0 0 0 0 16-3584
+chrM 10115 0 0 0 0 0 0 0 16-3584
+chrM 10116 0 0 0 0 0 0 0 16-3584
+chrM 10117 0 0 0 0 0 0 0 16-3584
+chrM 10118 0 0 0 0 0 0 0 16-3584
+chrM 10119 0 0 0 0 0 0 0 16-3584
+chrM 10120 0 0 0 0 0 0 0 16-3584
+chrM 10121 0 0 0 0 0 0 0 16-3584
+chrM 10122 0 0 0 0 0 0 0 16-3584
+chrM 10123 0 0 0 0 0 0 0 16-3584
+chrM 10124 0 0 0 0 0 0 0 16-3584
+chrM 10125 0 0 0 0 0 0 0 16-3584
+chrM 10126 0 0 0 0 0 0 0 16-3584
+chrM 10127 0 0 0 0 0 0 0 16-3584
+chrM 10128 0 0 0 0 0 0 0 16-3584
+chrM 10129 0 0 0 0 0 0 0 16-3584
+chrM 10130 0 0 0 0 0 0 0 16-3584
+chrM 10131 0 0 0 0 0 0 0 16-3584
+chrM 10132 0 0 0 0 0 0 0 16-3584
+chrM 10133 0 0 0 0 0 0 0 16-3584
+chrM 10134 0 0 0 0 0 0 0 16-3584
+chrM 10135 0 0 0 0 0 0 0 16-3584
+chrM 10136 0 0 0 0 0 0 0 16-3584
+chrM 10137 0 0 0 0 0 0 0 16-3584
+chrM 10138 0 0 0 0 0 0 0 16-3584
+chrM 10139 0 0 0 0 0 0 0 16-3584
+chrM 10140 0 0 0 0 0 0 0 16-3584
+chrM 10141 0 0 0 0 0 0 0 16-3584
+chrM 10142 0 0 0 0 0 0 0 16-3584
+chrM 10143 0 0 0 0 0 0 0 16-3584
+chrM 10144 0 0 0 0 0 0 0 16-3584
+chrM 10145 0 0 0 0 0 0 0 16-3584
+chrM 10146 0 0 0 0 0 0 0 16-3584
+chrM 10147 0 0 0 0 0 0 0 16-3584
+chrM 10148 0 0 0 0 0 0 0 16-3584
+chrM 10149 0 0 0 0 0 0 0 16-3584
+chrM 10150 0 0 0 0 0 0 0 16-3584
+chrM 10151 0 0 0 0 0 0 0 16-3584
+chrM 10152 0 0 0 0 0 0 0 16-3584
+chrM 10153 0 0 0 0 0 0 0 16-3584
+chrM 10154 0 0 0 0 0 0 0 16-3584
+chrM 10155 0 0 0 0 0 0 0 16-3584
+chrM 10156 0 0 0 0 0 0 0 16-3584
+chrM 10157 0 0 0 0 0 0 0 16-3584
+chrM 10158 0 0 0 0 0 0 0 16-3584
+chrM 10159 0 0 0 0 0 0 0 16-3584
+chrM 10160 0 0 0 0 0 0 0 16-3584
+chrM 10161 0 0 0 0 0 0 0 16-3584
+chrM 10162 0 0 0 0 0 0 0 16-3584
+chrM 10163 0 0 0 0 0 0 0 16-3584
+chrM 10164 0 0 0 0 0 0 0 16-3584
+chrM 10165 0 0 0 0 0 0 0 16-3584
+chrM 10166 0 0 0 0 0 0 0 16-3584
+chrM 10167 0 0 0 0 0 0 0 16-3584
+chrM 10168 0 0 0 0 0 0 0 16-3584
+chrM 10169 0 0 0 0 0 0 0 16-3584
+chrM 10170 0 0 0 0 0 0 0 16-3584
+chrM 10171 0 0 0 0 0 0 0 16-3584
+chrM 10172 0 0 0 0 0 0 0 16-3584
+chrM 10173 0 0 0 0 0 0 0 16-3584
+chrM 10174 0 0 0 0 0 0 0 16-3584
+chrM 10175 0 0 0 0 0 0 0 16-3584
+chrM 10176 0 0 0 0 0 0 0 16-3584
+chrM 10177 0 0 0 0 0 0 0 16-3584
+chrM 10178 0 0 0 0 0 0 0 16-3584
+chrM 10179 0 0 0 0 0 0 0 16-3584
+chrM 10180 0 0 0 0 0 0 0 16-3584
+chrM 10181 0 0 0 0 0 0 0 16-3584
+chrM 10182 0 0 0 0 0 0 0 16-3584
+chrM 10183 0 0 0 0 0 0 0 16-3584
+chrM 10184 0 0 0 0 0 0 0 16-3584
+chrM 10185 0 0 0 0 0 0 0 16-3584
+chrM 10186 0 0 0 0 0 0 0 16-3584
+chrM 10187 0 0 0 0 0 0 0 16-3584
+chrM 10188 0 0 0 0 0 0 0 16-3584
+chrM 10189 0 0 0 0 0 0 0 16-3584
+chrM 10190 0 0 0 0 0 0 0 16-3584
+chrM 10191 0 0 0 0 0 0 0 16-3584
+chrM 10192 0 0 0 0 0 0 0 16-3584
+chrM 10193 0 0 0 0 0 0 0 16-3584
+chrM 10194 0 0 0 0 0 0 0 16-3584
+chrM 10195 0 0 0 0 0 0 0 16-3584
+chrM 10196 0 0 0 0 0 0 0 16-3584
+chrM 10197 0 0 0 0 0 0 0 16-3584
+chrM 10198 0 0 0 0 0 0 0 16-3584
+chrM 10199 0 0 0 0 0 0 0 16-3584
+chrM 10200 0 0 0 0 0 0 0 16-3584
+chrM 10201 0 0 0 0 0 0 0 16-3584
+chrM 10202 0 0 0 0 0 0 0 16-3584
+chrM 10203 0 0 0 0 0 0 0 16-3584
+chrM 10204 0 0 0 0 0 0 0 16-3584
+chrM 10205 0 0 0 0 0 0 0 16-3584
+chrM 10206 0 0 0 0 0 0 0 16-3584
+chrM 10207 0 0 0 0 0 0 0 16-3584
+chrM 10208 0 0 0 0 0 0 0 16-3584
+chrM 10209 0 0 0 0 0 0 0 16-3584
+chrM 10210 0 0 0 0 0 0 0 16-3584
+chrM 10211 0 0 0 0 0 0 0 16-3584
+chrM 10212 0 0 0 0 0 0 0 16-3584
+chrM 10213 0 0 0 0 0 0 0 16-3584
+chrM 10214 0 0 0 0 0 0 0 16-3584
+chrM 10215 0 0 0 0 0 0 0 16-3584
+chrM 10216 0 0 0 0 0 0 0 16-3584
+chrM 10217 0 0 0 0 0 0 0 16-3584
+chrM 10218 0 0 0 0 0 0 0 16-3584
+chrM 10219 0 0 0 0 0 0 0 16-3584
+chrM 10220 0 0 0 0 0 0 0 16-3584
+chrM 10221 0 0 0 0 0 0 0 16-3584
+chrM 10222 0 0 0 0 0 0 0 16-3584
+chrM 10223 0 0 0 0 0 0 0 16-3584
+chrM 10224 0 0 0 0 0 0 0 16-3584
+chrM 10225 0 0 0 0 0 0 0 16-3584
+chrM 10226 0 0 0 0 0 0 0 16-3584
+chrM 10227 0 0 0 0 0 0 0 16-3584
+chrM 10228 0 0 0 0 0 0 0 16-3584
+chrM 10229 0 0 0 0 0 0 0 16-3584
+chrM 10230 0 0 0 0 0 0 0 16-3584
+chrM 10231 0 0 0 0 0 0 0 16-3584
+chrM 10232 0 0 0 0 0 0 0 16-3584
+chrM 10233 0 0 0 0 0 0 0 16-3584
+chrM 10234 0 0 0 0 0 0 0 16-3584
+chrM 10235 0 0 0 0 0 0 0 16-3584
+chrM 10236 0 0 0 0 0 0 0 16-3584
+chrM 10237 0 0 0 0 0 0 0 16-3584
+chrM 10238 0 0 0 0 0 0 0 16-3584
+chrM 10239 0 0 0 0 0 0 0 16-3584
+chrM 10240 0 0 0 0 0 0 0 16-3584
+chrM 10241 0 0 0 0 0 0 0 16-3584
+chrM 10242 0 0 0 0 0 0 0 16-3584
+chrM 10243 0 0 0 0 0 0 0 16-3584
+chrM 10244 0 0 0 0 0 0 0 16-3584
+chrM 10245 0 0 0 0 0 0 0 16-3584
+chrM 10246 0 0 0 0 0 0 0 16-3584
+chrM 10247 0 0 0 0 0 0 0 16-3584
+chrM 10248 0 0 0 0 0 0 0 16-3584
+chrM 10249 0 0 0 0 0 0 0 16-3584
+chrM 10250 0 0 0 0 0 0 0 16-3584
+chrM 10251 0 0 0 0 0 0 0 16-3584
+chrM 10252 0 0 0 0 0 0 0 16-3584
+chrM 10253 0 0 0 0 0 0 0 16-3584
+chrM 10254 0 0 0 0 0 0 0 16-3584
+chrM 10255 0 0 0 0 0 0 0 16-3584
+chrM 10256 0 0 0 0 0 0 0 16-3584
+chrM 10257 0 0 0 0 0 0 0 16-3584
+chrM 10258 0 0 0 0 0 0 0 16-3584
+chrM 10259 0 0 0 0 0 0 0 16-3584
+chrM 10260 0 0 0 0 0 0 0 16-3584
+chrM 10261 0 0 0 0 0 0 0 16-3584
+chrM 10262 0 0 0 0 0 0 0 16-3584
+chrM 10263 0 0 0 0 0 0 0 16-3584
+chrM 10264 0 0 0 0 0 0 0 16-3584
+chrM 10265 0 0 0 0 0 0 0 16-3584
+chrM 10266 0 0 0 0 0 0 0 16-3584
+chrM 10267 0 0 0 0 0 0 0 16-3584
+chrM 10268 0 0 0 0 0 0 0 16-3584
+chrM 10269 0 0 0 0 0 0 0 16-3584
+chrM 10270 0 0 0 0 0 0 0 16-3584
+chrM 10271 0 0 0 0 0 0 0 16-3584
+chrM 10272 0 0 0 0 0 0 0 16-3584
+chrM 10273 0 0 0 0 0 0 0 16-3584
+chrM 10274 0 0 0 0 0 0 0 16-3584
+chrM 10275 0 0 0 0 0 0 0 16-3584
+chrM 10276 0 0 0 0 0 0 0 16-3584
+chrM 10277 0 0 0 0 0 0 0 16-3584
+chrM 10278 0 0 0 0 0 0 0 16-3584
+chrM 10279 0 0 0 0 0 0 0 16-3584
+chrM 10280 0 0 0 0 0 0 0 16-3584
+chrM 10281 0 0 0 0 0 0 0 16-3584
+chrM 10282 0 0 0 0 0 0 0 16-3584
+chrM 10283 0 0 0 0 0 0 0 16-3584
+chrM 10284 0 0 0 0 0 0 0 16-3584
+chrM 10285 0 0 0 0 0 0 0 16-3584
+chrM 10286 0 0 0 0 0 0 0 16-3584
+chrM 10287 0 0 0 0 0 0 0 16-3584
+chrM 10288 0 0 0 0 0 0 0 16-3584
+chrM 10289 0 0 0 0 0 0 0 16-3584
+chrM 10290 0 0 0 0 0 0 0 16-3584
+chrM 10291 0 0 0 0 0 0 0 16-3584
+chrM 10292 0 0 0 0 0 0 0 16-3584
+chrM 10293 0 0 0 0 0 0 0 16-3584
+chrM 10294 0 0 0 0 0 0 0 16-3584
+chrM 10295 0 0 0 0 0 0 0 16-3584
+chrM 10296 0 0 0 0 0 0 0 16-3584
+chrM 10297 0 0 0 0 0 0 0 16-3584
+chrM 10298 0 0 0 0 0 0 0 16-3584
+chrM 10299 0 0 0 0 0 0 0 16-3584
+chrM 10300 0 0 0 0 0 0 0 16-3584
+chrM 10301 0 0 0 0 0 0 0 16-3584
+chrM 10302 0 0 0 0 0 0 0 16-3584
+chrM 10303 0 0 0 0 0 0 0 16-3584
+chrM 10304 0 0 0 0 0 0 0 16-3584
+chrM 10305 0 0 0 0 0 0 0 16-3584
+chrM 10306 0 0 0 0 0 0 0 16-3584
+chrM 10307 0 0 0 0 0 0 0 16-3584
+chrM 10308 0 0 0 0 0 0 0 16-3584
+chrM 10309 0 0 0 0 0 0 0 16-3584
+chrM 10310 0 0 0 0 0 0 0 16-3584
+chrM 10311 0 0 0 0 0 0 0 16-3584
+chrM 10312 0 0 0 0 0 0 0 16-3584
+chrM 10313 0 0 0 0 0 0 0 16-3584
+chrM 10314 0 0 0 0 0 0 0 16-3584
+chrM 10315 0 0 0 0 0 0 0 16-3584
+chrM 10316 0 0 0 0 0 0 0 16-3584
+chrM 10317 0 0 0 0 0 0 0 16-3584
+chrM 10318 0 0 0 0 0 0 0 16-3584
+chrM 10319 0 0 0 0 0 0 0 16-3584
+chrM 10320 0 0 0 0 0 0 0 16-3584
+chrM 10321 0 0 0 0 0 0 0 16-3584
+chrM 10322 0 0 0 0 0 0 0 16-3584
+chrM 10323 0 0 0 0 0 0 0 16-3584
+chrM 10324 0 0 0 0 0 0 0 16-3584
+chrM 10325 0 0 0 0 0 0 0 16-3584
+chrM 10326 0 0 0 0 0 0 0 16-3584
+chrM 10327 0 0 0 0 0 0 0 16-3584
+chrM 10328 0 0 0 0 0 0 0 16-3584
+chrM 10329 0 0 0 0 0 0 0 16-3584
+chrM 10330 0 0 0 0 0 0 0 16-3584
+chrM 10331 0 0 0 0 0 0 0 16-3584
+chrM 10332 0 0 0 0 0 0 0 16-3584
+chrM 10333 0 0 0 0 0 0 0 16-3584
+chrM 10334 0 0 0 0 0 0 0 16-3584
+chrM 10335 0 0 0 0 0 0 0 16-3584
+chrM 10336 0 0 0 0 0 0 0 16-3584
+chrM 10337 0 0 0 0 0 0 0 16-3584
+chrM 10338 0 0 0 0 0 0 0 16-3584
+chrM 10339 0 0 0 0 0 0 0 16-3584
+chrM 10340 0 0 0 0 0 0 0 16-3584
+chrM 10341 0 0 0 0 0 0 0 16-3584
+chrM 10342 0 0 0 0 0 0 0 16-3584
+chrM 10343 0 0 0 0 0 0 0 16-3584
+chrM 10344 0 0 0 0 0 0 0 16-3584
+chrM 10345 0 0 0 0 0 0 0 16-3584
+chrM 10346 0 0 0 0 0 0 0 16-3584
+chrM 10347 0 0 0 0 0 0 0 16-3584
+chrM 10348 0 0 0 0 0 0 0 16-3584
+chrM 10349 0 0 0 0 0 0 0 16-3584
+chrM 10350 0 0 0 0 0 0 0 16-3584
+chrM 10351 0 0 0 0 0 0 0 16-3584
+chrM 10352 0 0 0 0 0 0 0 16-3584
+chrM 10353 0 0 0 0 0 0 0 16-3584
+chrM 10354 0 0 0 0 0 0 0 16-3584
+chrM 10355 0 0 0 0 0 0 0 16-3584
+chrM 10356 0 0 0 0 0 0 0 16-3584
+chrM 10357 0 0 0 0 0 0 0 16-3584
+chrM 10358 0 0 0 0 0 0 0 16-3584
+chrM 10359 0 0 0 0 0 0 0 16-3584
+chrM 10360 0 0 0 0 0 0 0 16-3584
+chrM 10361 0 0 0 0 0 0 0 16-3584
+chrM 10362 0 0 0 0 0 0 0 16-3584
+chrM 10363 0 0 0 0 0 0 0 16-3584
+chrM 10364 0 0 0 0 0 0 0 16-3584
+chrM 10365 0 0 0 0 0 0 0 16-3584
+chrM 10366 0 0 0 0 0 0 0 16-3584
+chrM 10367 0 0 0 0 0 0 0 16-3584
+chrM 10368 0 0 0 0 0 0 0 16-3584
+chrM 10369 0 0 0 0 0 0 0 16-3584
+chrM 10370 0 0 0 0 0 0 0 16-3584
+chrM 10371 0 0 0 0 0 0 0 16-3584
+chrM 10372 0 0 0 0 0 0 0 16-3584
+chrM 10373 0 0 0 0 0 0 0 16-3584
+chrM 10374 0 0 0 0 0 0 0 16-3584
+chrM 10375 0 0 0 0 0 0 0 16-3584
+chrM 10376 0 0 0 0 0 0 0 16-3584
+chrM 10377 0 0 0 0 0 0 0 16-3584
+chrM 10378 0 0 0 0 0 0 0 16-3584
+chrM 10379 0 0 0 0 0 0 0 16-3584
+chrM 10380 0 0 0 0 0 0 0 16-3584
+chrM 10381 0 0 0 0 0 0 0 16-3584
+chrM 10382 0 0 0 0 0 0 0 16-3584
+chrM 10383 0 0 0 0 0 0 0 16-3584
+chrM 10384 0 0 0 0 0 0 0 16-3584
+chrM 10385 0 0 0 0 0 0 0 16-3584
+chrM 10386 0 0 0 0 0 0 0 16-3584
+chrM 10387 0 0 0 0 0 0 0 16-3584
+chrM 10388 0 0 0 0 0 0 0 16-3584
+chrM 10389 0 0 0 0 0 0 0 16-3584
+chrM 10390 0 0 0 0 0 0 0 16-3584
+chrM 10391 0 0 0 0 0 0 0 16-3584
+chrM 10392 0 0 0 0 0 0 0 16-3584
+chrM 10393 0 0 0 0 0 0 0 16-3584
+chrM 10394 0 0 0 0 0 0 0 16-3584
+chrM 10395 0 0 0 0 0 0 0 16-3584
+chrM 10396 0 0 0 0 0 0 0 16-3584
+chrM 10397 0 0 0 0 0 0 0 16-3584
+chrM 10398 0 0 0 0 0 0 0 16-3584
+chrM 10399 0 0 0 0 0 0 0 16-3584
+chrM 10400 0 0 0 0 0 0 0 16-3584
+chrM 10401 0 0 0 0 0 0 0 16-3584
+chrM 10402 0 0 0 0 0 0 0 16-3584
+chrM 10403 0 0 0 0 0 0 0 16-3584
+chrM 10404 0 0 0 0 0 0 0 16-3584
+chrM 10405 0 0 0 0 0 0 0 16-3584
+chrM 10406 0 0 0 0 0 0 0 16-3584
+chrM 10407 0 0 0 0 0 0 0 16-3584
+chrM 10408 0 0 0 0 0 0 0 16-3584
+chrM 10409 0 0 0 0 0 0 0 16-3584
+chrM 10410 0 0 0 0 0 0 0 16-3584
+chrM 10411 0 0 0 0 0 0 0 16-3584
+chrM 10412 0 0 0 0 0 0 0 16-3584
+chrM 10413 0 0 0 0 0 0 0 16-3584
+chrM 10414 0 0 0 0 0 0 0 16-3584
+chrM 10415 0 0 0 0 0 0 0 16-3584
+chrM 10416 0 0 0 0 0 0 0 16-3584
+chrM 10417 0 0 0 0 0 0 0 16-3584
+chrM 10418 0 0 0 0 0 0 0 16-3584
+chrM 10419 0 0 0 0 0 0 0 16-3584
+chrM 10420 0 0 0 0 0 0 0 16-3584
+chrM 10421 0 0 0 0 0 0 0 16-3584
+chrM 10422 0 0 0 0 0 0 0 16-3584
+chrM 10423 0 0 0 0 0 0 0 16-3584
+chrM 10424 0 0 0 0 0 0 0 16-3584
+chrM 10425 0 0 0 0 0 0 0 16-3584
+chrM 10426 0 0 0 0 0 0 0 16-3584
+chrM 10427 0 0 0 0 0 0 0 16-3584
+chrM 10428 0 0 0 0 0 0 0 16-3584
+chrM 10429 0 0 0 0 0 0 0 16-3584
+chrM 10430 0 0 0 0 0 0 0 16-3584
+chrM 10431 0 0 0 0 0 0 0 16-3584
+chrM 10432 0 0 0 0 0 0 0 16-3584
+chrM 10433 0 0 0 0 0 0 0 16-3584
+chrM 10434 0 0 0 0 0 0 0 16-3584
+chrM 10435 0 0 0 0 0 0 0 16-3584
+chrM 10436 0 0 0 0 0 0 0 16-3584
+chrM 10437 0 0 0 0 0 0 0 16-3584
+chrM 10438 0 0 0 0 0 0 0 16-3584
+chrM 10439 0 0 0 0 0 0 0 16-3584
+chrM 10440 0 0 0 0 0 0 0 16-3584
+chrM 10441 0 0 0 0 0 0 0 16-3584
+chrM 10442 0 0 0 0 0 0 0 16-3584
+chrM 10443 0 0 0 0 0 0 0 16-3584
+chrM 10444 0 0 0 0 0 0 0 16-3584
+chrM 10445 0 0 0 0 0 0 0 16-3584
+chrM 10446 0 0 0 0 0 0 0 16-3584
+chrM 10447 0 0 0 0 0 0 0 16-3584
+chrM 10448 0 0 0 0 0 0 0 16-3584
+chrM 10449 0 0 0 0 0 0 0 16-3584
+chrM 10450 0 0 0 0 0 0 0 16-3584
+chrM 10451 0 0 0 0 0 0 0 16-3584
+chrM 10452 0 0 0 0 0 0 0 16-3584
+chrM 10453 0 0 0 0 0 0 0 16-3584
+chrM 10454 0 0 0 0 0 0 0 16-3584
+chrM 10455 0 0 0 0 0 0 0 16-3584
+chrM 10456 0 0 0 0 0 0 0 16-3584
+chrM 10457 0 0 0 0 0 0 0 16-3584
+chrM 10458 0 0 0 0 0 0 0 16-3584
+chrM 10459 0 0 0 0 0 0 0 16-3584
+chrM 10460 0 0 0 0 0 0 0 16-3584
+chrM 10461 0 0 0 0 0 0 0 16-3584
+chrM 10462 0 0 0 0 0 0 0 16-3584
+chrM 10463 0 0 0 0 0 0 0 16-3584
+chrM 10464 0 0 0 0 0 0 0 16-3584
+chrM 10465 0 0 0 0 0 0 0 16-3584
+chrM 10466 0 0 0 0 0 0 0 16-3584
+chrM 10467 0 0 0 0 0 0 0 16-3584
+chrM 10468 0 0 0 0 0 0 0 16-3584
+chrM 10469 0 0 0 0 0 0 0 16-3584
+chrM 10470 0 0 0 0 0 0 0 16-3584
+chrM 10471 0 0 0 0 0 0 0 16-3584
+chrM 10472 0 0 0 0 0 0 0 16-3584
+chrM 10473 0 0 0 0 0 0 0 16-3584
+chrM 10474 0 0 0 0 0 0 0 16-3584
+chrM 10475 0 0 0 0 0 0 0 16-3584
+chrM 10476 0 0 0 0 0 0 0 16-3584
+chrM 10477 0 0 0 0 0 0 0 16-3584
+chrM 10478 0 0 0 0 0 0 0 16-3584
+chrM 10479 0 0 0 0 0 0 0 16-3584
+chrM 10480 0 0 0 0 0 0 0 16-3584
+chrM 10481 0 0 0 0 0 0 0 16-3584
+chrM 10482 0 0 0 0 0 0 0 16-3584
+chrM 10483 0 0 0 0 0 0 0 16-3584
+chrM 10484 0 0 0 0 0 0 0 16-3584
+chrM 10485 0 0 0 0 0 0 0 16-3584
+chrM 10486 0 0 0 0 0 0 0 16-3584
+chrM 10487 0 0 0 0 0 0 0 16-3584
+chrM 10488 0 0 0 0 0 0 0 16-3584
+chrM 10489 0 0 0 0 0 0 0 16-3584
+chrM 10490 0 0 0 0 0 0 0 16-3584
+chrM 10491 0 0 0 0 0 0 0 16-3584
+chrM 10492 0 0 0 0 0 0 0 16-3584
+chrM 10493 0 0 0 0 0 0 0 16-3584
+chrM 10494 0 0 0 0 0 0 0 16-3584
+chrM 10495 0 0 0 0 0 0 0 16-3584
+chrM 10496 0 0 0 0 0 0 0 16-3584
+chrM 10497 0 0 0 0 0 0 0 16-3584
+chrM 10498 0 0 0 0 0 0 0 16-3584
+chrM 10499 0 0 0 0 0 0 0 16-3584
+chrM 10500 0 0 0 0 0 0 0 16-3584
+chrM 10501 0 0 0 0 0 0 0 16-3584
+chrM 10502 0 0 0 0 0 0 0 16-3584
+chrM 10503 0 0 0 0 0 0 0 16-3584
+chrM 10504 0 0 0 0 0 0 0 16-3584
+chrM 10505 0 0 0 0 0 0 0 16-3584
+chrM 10506 0 0 0 0 0 0 0 16-3584
+chrM 10507 0 0 0 0 0 0 0 16-3584
+chrM 10508 0 0 0 0 0 0 0 16-3584
+chrM 10509 0 0 0 0 0 0 0 16-3584
+chrM 10510 0 0 0 0 0 0 0 16-3584
+chrM 10511 0 0 0 0 0 0 0 16-3584
+chrM 10512 0 0 0 0 0 0 0 16-3584
+chrM 10513 0 0 0 0 0 0 0 16-3584
+chrM 10514 0 0 0 0 0 0 0 16-3584
+chrM 10515 0 0 0 0 0 0 0 16-3584
+chrM 10516 0 0 0 0 0 0 0 16-3584
+chrM 10517 0 0 0 0 0 0 0 16-3584
+chrM 10518 0 0 0 0 0 0 0 16-3584
+chrM 10519 0 0 0 0 0 0 0 16-3584
+chrM 10520 0 0 0 0 0 0 0 16-3584
+chrM 10521 0 0 0 0 0 0 0 16-3584
+chrM 10522 0 0 0 0 0 0 0 16-3584
+chrM 10523 0 0 0 0 0 0 0 16-3584
+chrM 10524 0 0 0 0 0 0 0 16-3584
+chrM 10525 0 0 0 0 0 0 0 16-3584
+chrM 10526 0 0 0 0 0 0 0 16-3584
+chrM 10527 0 0 0 0 0 0 0 16-3584
+chrM 10528 0 0 0 0 0 0 0 16-3584
+chrM 10529 0 0 0 0 0 0 0 16-3584
+chrM 10530 0 0 0 0 0 0 0 16-3584
+chrM 10531 0 0 0 0 0 0 0 16-3584
+chrM 10532 0 0 0 0 0 0 0 16-3584
+chrM 10533 0 0 0 0 0 0 0 16-3584
+chrM 10534 0 0 0 0 0 0 0 16-3584
+chrM 10535 0 0 0 0 0 0 0 16-3584
+chrM 10536 0 0 0 0 0 0 0 16-3584
+chrM 10537 0 0 0 0 0 0 0 16-3584
+chrM 10538 0 0 0 0 0 0 0 16-3584
+chrM 10539 0 0 0 0 0 0 0 16-3584
+chrM 10540 0 0 0 0 0 0 0 16-3584
+chrM 10541 0 0 0 0 0 0 0 16-3584
+chrM 10542 0 0 0 0 0 0 0 16-3584
+chrM 10543 0 0 0 0 0 0 0 16-3584
+chrM 10544 0 0 0 0 0 0 0 16-3584
+chrM 10545 0 0 0 0 0 0 0 16-3584
+chrM 10546 0 0 0 0 0 0 0 16-3584
+chrM 10547 0 0 0 0 0 0 0 16-3584
+chrM 10548 0 0 0 0 0 0 0 16-3584
+chrM 10549 0 0 0 0 0 0 0 16-3584
+chrM 10550 0 0 0 0 0 0 0 16-3584
+chrM 10551 0 0 0 0 0 0 0 16-3584
+chrM 10552 0 0 0 0 0 0 0 16-3584
+chrM 10553 0 0 0 0 0 0 0 16-3584
+chrM 10554 0 0 0 0 0 0 0 16-3584
+chrM 10555 0 0 0 0 0 0 0 16-3584
+chrM 10556 0 0 0 0 0 0 0 16-3584
+chrM 10557 0 0 0 0 0 0 0 16-3584
+chrM 10558 0 0 0 0 0 0 0 16-3584
+chrM 10559 0 0 0 0 0 0 0 16-3584
+chrM 10560 0 0 0 0 0 0 0 16-3584
+chrM 10561 0 0 0 0 0 0 0 16-3584
+chrM 10562 0 0 0 0 0 0 0 16-3584
+chrM 10563 0 0 0 0 0 0 0 16-3584
+chrM 10564 0 0 0 0 0 0 0 16-3584
+chrM 10565 0 0 0 0 0 0 0 16-3584
+chrM 10566 0 0 0 0 0 0 0 16-3584
+chrM 10567 0 0 0 0 0 0 0 16-3584
+chrM 10568 0 0 0 0 0 0 0 16-3584
+chrM 10569 0 0 0 0 0 0 0 16-3584
+chrM 10570 0 0 0 0 0 0 0 16-3584
+chrM 10571 0 0 0 0 0 0 0 16-3584
+chrM 10572 0 0 0 0 0 0 0 16-3584
+chrM 10573 0 0 0 0 0 0 0 16-3584
+chrM 10574 0 0 0 0 0 0 0 16-3584
+chrM 10575 0 0 0 0 0 0 0 16-3584
+chrM 10576 0 0 0 0 0 0 0 16-3584
+chrM 10577 0 0 0 0 0 0 0 16-3584
+chrM 10578 0 0 0 0 0 0 0 16-3584
+chrM 10579 0 0 0 0 0 0 0 16-3584
+chrM 10580 0 0 0 0 0 0 0 16-3584
+chrM 10581 0 0 0 0 0 0 0 16-3584
+chrM 10582 0 0 0 0 0 0 0 16-3584
+chrM 10583 0 0 0 0 0 0 0 16-3584
+chrM 10584 0 0 0 0 0 0 0 16-3584
+chrM 10585 0 0 0 0 0 0 0 16-3584
+chrM 10586 0 0 0 0 0 0 0 16-3584
+chrM 10587 0 0 0 0 0 0 0 16-3584
+chrM 10588 0 0 0 0 0 0 0 16-3584
+chrM 10589 0 0 0 0 0 0 0 16-3584
+chrM 10590 0 0 0 0 0 0 0 16-3584
+chrM 10591 0 0 0 0 0 0 0 16-3584
+chrM 10592 0 0 0 0 0 0 0 16-3584
+chrM 10593 0 0 0 0 0 0 0 16-3584
+chrM 10594 0 0 0 0 0 0 0 16-3584
+chrM 10595 0 0 0 0 0 0 0 16-3584
+chrM 10596 0 0 0 0 0 0 0 16-3584
+chrM 10597 0 0 0 0 0 0 0 16-3584
+chrM 10598 0 0 0 0 0 0 0 16-3584
+chrM 10599 0 0 0 0 0 0 0 16-3584
+chrM 10600 0 0 0 0 0 0 0 16-3584
+chrM 10601 0 0 0 0 0 0 0 16-3584
+chrM 10602 0 0 0 0 0 0 0 16-3584
+chrM 10603 0 0 0 0 0 0 0 16-3584
+chrM 10604 0 0 0 0 0 0 0 16-3584
+chrM 10605 0 0 0 0 0 0 0 16-3584
+chrM 10606 0 0 0 0 0 0 0 16-3584
+chrM 10607 0 0 0 0 0 0 0 16-3584
+chrM 10608 0 0 0 0 0 0 0 16-3584
+chrM 10609 0 0 0 0 0 0 0 16-3584
+chrM 10610 0 0 0 0 0 0 0 16-3584
+chrM 10611 0 0 0 0 0 0 0 16-3584
+chrM 10612 0 0 0 0 0 0 0 16-3584
+chrM 10613 0 0 0 0 0 0 0 16-3584
+chrM 10614 0 0 0 0 0 0 0 16-3584
+chrM 10615 0 0 0 0 0 0 0 16-3584
+chrM 10616 0 0 0 0 0 0 0 16-3584
+chrM 10617 0 0 0 0 0 0 0 16-3584
+chrM 10618 0 0 0 0 0 0 0 16-3584
+chrM 10619 0 0 0 0 0 0 0 16-3584
+chrM 10620 0 0 0 0 0 0 0 16-3584
+chrM 10621 0 0 0 0 0 0 0 16-3584
+chrM 10622 0 0 0 0 0 0 0 16-3584
+chrM 10623 0 0 0 0 0 0 0 16-3584
+chrM 10624 0 0 0 0 0 0 0 16-3584
+chrM 10625 0 0 0 0 0 0 0 16-3584
+chrM 10626 0 0 0 0 0 0 0 16-3584
+chrM 10627 0 0 0 0 0 0 0 16-3584
+chrM 10628 0 0 0 0 0 0 0 16-3584
+chrM 10629 0 0 0 0 0 0 0 16-3584
+chrM 10630 0 0 0 0 0 0 0 16-3584
+chrM 10631 0 0 0 0 0 0 0 16-3584
+chrM 10632 0 0 0 0 0 0 0 16-3584
+chrM 10633 0 0 0 0 0 0 0 16-3584
+chrM 10634 0 0 0 0 0 0 0 16-3584
+chrM 10635 0 0 0 0 0 0 0 16-3584
+chrM 10636 0 0 0 0 0 0 0 16-3584
+chrM 10637 0 0 0 0 0 0 0 16-3584
+chrM 10638 0 0 0 0 0 0 0 16-3584
+chrM 10639 0 0 0 0 0 0 0 16-3584
+chrM 10640 0 0 0 0 0 0 0 16-3584
+chrM 10641 0 0 0 0 0 0 0 16-3584
+chrM 10642 0 0 0 0 0 0 0 16-3584
+chrM 10643 0 0 0 0 0 0 0 16-3584
+chrM 10644 0 0 0 0 0 0 0 16-3584
+chrM 10645 0 0 0 0 0 0 0 16-3584
+chrM 10646 0 0 0 0 0 0 0 16-3584
+chrM 10647 0 0 0 0 0 0 0 16-3584
+chrM 10648 0 0 0 0 0 0 0 16-3584
+chrM 10649 0 0 0 0 0 0 0 16-3584
+chrM 10650 0 0 0 0 0 0 0 16-3584
+chrM 10651 0 0 0 0 0 0 0 16-3584
+chrM 10652 0 0 0 0 0 0 0 16-3584
+chrM 10653 0 0 0 0 0 0 0 16-3584
+chrM 10654 0 0 0 0 0 0 0 16-3584
+chrM 10655 0 0 0 0 0 0 0 16-3584
+chrM 10656 0 0 0 0 0 0 0 16-3584
+chrM 10657 0 0 0 0 0 0 0 16-3584
+chrM 10658 0 0 0 0 0 0 0 16-3584
+chrM 10659 0 0 0 0 0 0 0 16-3584
+chrM 10660 0 0 0 0 0 0 0 16-3584
+chrM 10661 0 0 0 0 0 0 0 16-3584
+chrM 10662 0 0 0 0 0 0 0 16-3584
+chrM 10663 0 0 0 0 0 0 0 16-3584
+chrM 10664 0 0 0 0 0 0 0 16-3584
+chrM 10665 0 0 0 0 0 0 0 16-3584
+chrM 10666 0 0 0 0 0 0 0 16-3584
+chrM 10667 0 0 0 0 0 0 0 16-3584
+chrM 10668 0 0 0 0 0 0 0 16-3584
+chrM 10669 0 0 0 0 0 0 0 16-3584
+chrM 10670 0 0 0 0 0 0 0 16-3584
+chrM 10671 0 0 0 0 0 0 0 16-3584
+chrM 10672 0 0 0 0 0 0 0 16-3584
+chrM 10673 0 0 0 0 0 0 0 16-3584
+chrM 10674 0 0 0 0 0 0 0 16-3584
+chrM 10675 0 0 0 0 0 0 0 16-3584
+chrM 10676 0 0 0 0 0 0 0 16-3584
+chrM 10677 0 0 0 0 0 0 0 16-3584
+chrM 10678 0 0 0 0 0 0 0 16-3584
+chrM 10679 0 0 0 0 0 0 0 16-3584
+chrM 10680 0 0 0 0 0 0 0 16-3584
+chrM 10681 0 0 0 0 0 0 0 16-3584
+chrM 10682 0 0 0 0 0 0 0 16-3584
+chrM 10683 0 0 0 0 0 0 0 16-3584
+chrM 10684 0 0 0 0 0 0 0 16-3584
+chrM 10685 0 0 0 0 0 0 0 16-3584
+chrM 10686 0 0 0 0 0 0 0 16-3584
+chrM 10687 0 0 0 0 0 0 0 16-3584
+chrM 10688 0 0 0 0 0 0 0 16-3584
+chrM 10689 0 0 0 0 0 0 0 16-3584
+chrM 10690 0 0 0 0 0 0 0 16-3584
+chrM 10691 0 0 0 0 0 0 0 16-3584
+chrM 10692 0 0 0 0 0 0 0 16-3584
+chrM 10693 0 0 0 0 0 0 0 16-3584
+chrM 10694 0 0 0 0 0 0 0 16-3584
+chrM 10695 0 0 0 0 0 0 0 16-3584
+chrM 10696 0 0 0 0 0 0 0 16-3584
+chrM 10697 0 0 0 0 0 0 0 16-3584
+chrM 10698 0 0 0 0 0 0 0 16-3584
+chrM 10699 0 0 0 0 0 0 0 16-3584
+chrM 10700 0 0 0 0 0 0 0 16-3584
+chrM 10701 0 0 0 0 0 0 0 16-3584
+chrM 10702 0 0 0 0 0 0 0 16-3584
+chrM 10703 0 0 0 0 0 0 0 16-3584
+chrM 10704 0 0 0 0 0 0 0 16-3584
+chrM 10705 0 0 0 0 0 0 0 16-3584
+chrM 10706 0 0 0 0 0 0 0 16-3584
+chrM 10707 0 0 0 0 0 0 0 16-3584
+chrM 10708 0 0 0 0 0 0 0 16-3584
+chrM 10709 0 0 0 0 0 0 0 16-3584
+chrM 10710 0 0 0 0 0 0 0 16-3584
+chrM 10711 0 0 0 0 0 0 0 16-3584
+chrM 10712 0 0 0 0 0 0 0 16-3584
+chrM 10713 0 0 0 0 0 0 0 16-3584
+chrM 10714 0 0 0 0 0 0 0 16-3584
+chrM 10715 0 0 0 0 0 0 0 16-3584
+chrM 10716 0 0 0 0 0 0 0 16-3584
+chrM 10717 0 0 0 0 0 0 0 16-3584
+chrM 10718 0 0 0 0 0 0 0 16-3584
+chrM 10719 0 0 0 0 0 0 0 16-3584
+chrM 10720 0 0 0 0 0 0 0 16-3584
+chrM 10721 0 0 0 0 0 0 0 16-3584
+chrM 10722 0 0 0 0 0 0 0 16-3584
+chrM 10723 0 0 0 0 0 0 0 16-3584
+chrM 10724 0 0 0 0 0 0 0 16-3584
+chrM 10725 0 0 0 0 0 0 0 16-3584
+chrM 10726 0 0 0 0 0 0 0 16-3584
+chrM 10727 0 0 0 0 0 0 0 16-3584
+chrM 10728 0 0 0 0 0 0 0 16-3584
+chrM 10729 0 0 0 0 0 0 0 16-3584
+chrM 10730 0 0 0 0 0 0 0 16-3584
+chrM 10731 0 0 0 0 0 0 0 16-3584
+chrM 10732 0 0 0 0 0 0 0 16-3584
+chrM 10733 0 0 0 0 0 0 0 16-3584
+chrM 10734 0 0 0 0 0 0 0 16-3584
+chrM 10735 0 0 0 0 0 0 0 16-3584
+chrM 10736 0 0 0 0 0 0 0 16-3584
+chrM 10737 0 0 0 0 0 0 0 16-3584
+chrM 10738 0 0 0 0 0 0 0 16-3584
+chrM 10739 0 0 0 0 0 0 0 16-3584
+chrM 10740 0 0 0 0 0 0 0 16-3584
+chrM 10741 0 0 0 0 0 0 0 16-3584
+chrM 10742 0 0 0 0 0 0 0 16-3584
+chrM 10743 0 0 0 0 0 0 0 16-3584
+chrM 10744 0 0 0 0 0 0 0 16-3584
+chrM 10745 0 0 0 0 0 0 0 16-3584
+chrM 10746 0 0 0 0 0 0 0 16-3584
+chrM 10747 0 0 0 0 0 0 0 16-3584
+chrM 10748 0 0 0 0 0 0 0 16-3584
+chrM 10749 0 0 0 0 0 0 0 16-3584
+chrM 10750 0 0 0 0 0 0 0 16-3584
+chrM 10751 0 0 0 0 0 0 0 16-3584
+chrM 10752 0 0 0 0 0 0 0 16-3584
+chrM 10753 0 0 0 0 0 0 0 16-3584
+chrM 10754 0 0 0 0 0 0 0 16-3584
+chrM 10755 0 0 0 0 0 0 0 16-3584
+chrM 10756 0 0 0 0 0 0 0 16-3584
+chrM 10757 0 0 0 0 0 0 0 16-3584
+chrM 10758 0 0 0 0 0 0 0 16-3584
+chrM 10759 0 0 0 0 0 0 0 16-3584
+chrM 10760 0 0 0 0 0 0 0 16-3584
+chrM 10761 0 0 0 0 0 0 0 16-3584
+chrM 10762 0 0 0 0 0 0 0 16-3584
+chrM 10763 0 0 0 0 0 0 0 16-3584
+chrM 10764 0 0 0 0 0 0 0 16-3584
+chrM 10765 0 0 0 0 0 0 0 16-3584
+chrM 10766 0 0 0 0 0 0 0 16-3584
+chrM 10767 0 0 0 0 0 0 0 16-3584
+chrM 10768 0 0 0 0 0 0 0 16-3584
+chrM 10769 0 0 0 0 0 0 0 16-3584
+chrM 10770 0 0 0 0 0 0 0 16-3584
+chrM 10771 0 0 0 0 0 0 0 16-3584
+chrM 10772 0 0 0 0 0 0 0 16-3584
+chrM 10773 0 0 0 0 0 0 0 16-3584
+chrM 10774 0 0 0 0 0 0 0 16-3584
+chrM 10775 0 0 0 0 0 0 0 16-3584
+chrM 10776 0 0 0 0 0 0 0 16-3584
+chrM 10777 0 0 0 0 0 0 0 16-3584
+chrM 10778 0 0 0 0 0 0 0 16-3584
+chrM 10779 0 0 0 0 0 0 0 16-3584
+chrM 10780 0 0 0 0 0 0 0 16-3584
+chrM 10781 0 0 0 0 0 0 0 16-3584
+chrM 10782 0 0 0 0 0 0 0 16-3584
+chrM 10783 0 0 0 0 0 0 0 16-3584
+chrM 10784 0 0 0 0 0 0 0 16-3584
+chrM 10785 0 0 0 0 0 0 0 16-3584
+chrM 10786 0 0 0 0 0 0 0 16-3584
+chrM 10787 0 0 0 0 0 0 0 16-3584
+chrM 10788 0 0 0 0 0 0 0 16-3584
+chrM 10789 0 0 0 0 0 0 0 16-3584
+chrM 10790 0 0 0 0 0 0 0 16-3584
+chrM 10791 0 0 0 0 0 0 0 16-3584
+chrM 10792 0 0 0 0 0 0 0 16-3584
+chrM 10793 0 0 0 0 0 0 0 16-3584
+chrM 10794 0 0 0 0 0 0 0 16-3584
+chrM 10795 0 0 0 0 0 0 0 16-3584
+chrM 10796 0 0 0 0 0 0 0 16-3584
+chrM 10797 0 0 0 0 0 0 0 16-3584
+chrM 10798 0 0 0 0 0 0 0 16-3584
+chrM 10799 0 0 0 0 0 0 0 16-3584
+chrM 10800 0 0 0 0 0 0 0 16-3584
+chrM 10801 0 0 0 0 0 0 0 16-3584
+chrM 10802 0 0 0 0 0 0 0 16-3584
+chrM 10803 0 0 0 0 0 0 0 16-3584
+chrM 10804 0 0 0 0 0 0 0 16-3584
+chrM 10805 0 0 0 0 0 0 0 16-3584
+chrM 10806 0 0 0 0 0 0 0 16-3584
+chrM 10807 0 0 0 0 0 0 0 16-3584
+chrM 10808 0 0 0 0 0 0 0 16-3584
+chrM 10809 0 0 0 0 0 0 0 16-3584
+chrM 10810 0 0 0 0 0 0 0 16-3584
+chrM 10811 0 0 0 0 0 0 0 16-3584
+chrM 10812 0 0 0 0 0 0 0 16-3584
+chrM 10813 0 0 0 0 0 0 0 16-3584
+chrM 10814 0 0 0 0 0 0 0 16-3584
+chrM 10815 0 0 0 0 0 0 0 16-3584
+chrM 10816 0 0 0 0 0 0 0 16-3584
+chrM 10817 0 0 0 0 0 0 0 16-3584
+chrM 10818 0 0 0 0 0 0 0 16-3584
+chrM 10819 0 0 0 0 0 0 0 16-3584
+chrM 10820 0 0 0 0 0 0 0 16-3584
+chrM 10821 0 0 0 0 0 0 0 16-3584
+chrM 10822 0 0 0 0 0 0 0 16-3584
+chrM 10823 0 0 0 0 0 0 0 16-3584
+chrM 10824 0 0 0 0 0 0 0 16-3584
+chrM 10825 0 0 0 0 0 0 0 16-3584
+chrM 10826 0 0 0 0 0 0 0 16-3584
+chrM 10827 0 0 0 0 0 0 0 16-3584
+chrM 10828 0 0 0 0 0 0 0 16-3584
+chrM 10829 0 0 0 0 0 0 0 16-3584
+chrM 10830 0 0 0 0 0 0 0 16-3584
+chrM 10831 0 0 0 0 0 0 0 16-3584
+chrM 10832 0 0 0 0 0 0 0 16-3584
+chrM 10833 0 0 0 0 0 0 0 16-3584
+chrM 10834 0 0 0 0 0 0 0 16-3584
+chrM 10835 0 0 0 0 0 0 0 16-3584
+chrM 10836 0 0 0 0 0 0 0 16-3584
+chrM 10837 0 0 0 0 0 0 0 16-3584
+chrM 10838 0 0 0 0 0 0 0 16-3584
+chrM 10839 0 0 0 0 0 0 0 16-3584
+chrM 10840 0 0 0 0 0 0 0 16-3584
+chrM 10841 0 0 0 0 0 0 0 16-3584
+chrM 10842 0 0 0 0 0 0 0 16-3584
+chrM 10843 0 0 0 0 0 0 0 16-3584
+chrM 10844 0 0 0 0 0 0 0 16-3584
+chrM 10845 0 0 0 0 0 0 0 16-3584
+chrM 10846 0 0 0 0 0 0 0 16-3584
+chrM 10847 0 0 0 0 0 0 0 16-3584
+chrM 10848 0 0 0 0 0 0 0 16-3584
+chrM 10849 0 0 0 0 0 0 0 16-3584
+chrM 10850 0 0 0 0 0 0 0 16-3584
+chrM 10851 0 0 0 0 0 0 0 16-3584
+chrM 10852 0 0 0 0 0 0 0 16-3584
+chrM 10853 0 0 0 0 0 0 0 16-3584
+chrM 10854 0 0 0 0 0 0 0 16-3584
+chrM 10855 0 0 0 0 0 0 0 16-3584
+chrM 10856 0 0 0 0 0 0 0 16-3584
+chrM 10857 0 0 0 0 0 0 0 16-3584
+chrM 10858 0 0 0 0 0 0 0 16-3584
+chrM 10859 0 0 0 0 0 0 0 16-3584
+chrM 10860 0 0 0 0 0 0 0 16-3584
+chrM 10861 0 0 0 0 0 0 0 16-3584
+chrM 10862 0 0 0 0 0 0 0 16-3584
+chrM 10863 0 0 0 0 0 0 0 16-3584
+chrM 10864 0 0 0 0 0 0 0 16-3584
+chrM 10865 0 0 0 0 0 0 0 16-3584
+chrM 10866 0 0 0 0 0 0 0 16-3584
+chrM 10867 0 0 0 0 0 0 0 16-3584
+chrM 10868 0 0 0 0 0 0 0 16-3584
+chrM 10869 0 0 0 0 0 0 0 16-3584
+chrM 10870 0 0 0 0 0 0 0 16-3584
+chrM 10871 0 0 0 0 0 0 0 16-3584
+chrM 10872 0 0 0 0 0 0 0 16-3584
+chrM 10873 0 0 0 0 0 0 0 16-3584
+chrM 10874 0 0 0 0 0 0 0 16-3584
+chrM 10875 0 0 0 0 0 0 0 16-3584
+chrM 10876 0 0 0 0 0 0 0 16-3584
+chrM 10877 0 0 0 0 0 0 0 16-3584
+chrM 10878 0 0 0 0 0 0 0 16-3584
+chrM 10879 0 0 0 0 0 0 0 16-3584
+chrM 10880 0 0 0 0 0 0 0 16-3584
+chrM 10881 0 0 0 0 0 0 0 16-3584
+chrM 10882 0 0 0 0 0 0 0 16-3584
+chrM 10883 0 0 0 0 0 0 0 16-3584
+chrM 10884 0 0 0 0 0 0 0 16-3584
+chrM 10885 0 0 0 0 0 0 0 16-3584
+chrM 10886 0 0 0 0 0 0 0 16-3584
+chrM 10887 0 0 0 0 0 0 0 16-3584
+chrM 10888 0 0 0 0 0 0 0 16-3584
+chrM 10889 0 0 0 0 0 0 0 16-3584
+chrM 10890 0 0 0 0 0 0 0 16-3584
+chrM 10891 0 0 0 0 0 0 0 16-3584
+chrM 10892 0 0 0 0 0 0 0 16-3584
+chrM 10893 0 0 0 0 0 0 0 16-3584
+chrM 10894 0 0 0 0 0 0 0 16-3584
+chrM 10895 0 0 0 0 0 0 0 16-3584
+chrM 10896 0 0 0 0 0 0 0 16-3584
+chrM 10897 0 0 0 0 0 0 0 16-3584
+chrM 10898 0 0 0 0 0 0 0 16-3584
+chrM 10899 0 0 0 0 0 0 0 16-3584
+chrM 10900 0 0 0 0 0 0 0 16-3584
+chrM 10901 0 0 0 0 0 0 0 16-3584
+chrM 10902 0 0 0 0 0 0 0 16-3584
+chrM 10903 0 0 0 0 0 0 0 16-3584
+chrM 10904 0 0 0 0 0 0 0 16-3584
+chrM 10905 0 0 0 0 0 0 0 16-3584
+chrM 10906 0 0 0 0 0 0 0 16-3584
+chrM 10907 0 0 0 0 0 0 0 16-3584
+chrM 10908 0 0 0 0 0 0 0 16-3584
+chrM 10909 0 0 0 0 0 0 0 16-3584
+chrM 10910 0 0 0 0 0 0 0 16-3584
+chrM 10911 0 0 0 0 0 0 0 16-3584
+chrM 10912 1 0 0 0 1 0 0 16-3584
+chrM 10913 1 1 0 0 0 0 0 16-3584
+chrM 10914 1 1 0 0 0 0 0 16-3584
+chrM 10915 1 0 0 1 0 0 0 16-3584
+chrM 10916 1 0 0 0 1 0 0 16-3584
+chrM 10917 2 0 0 2 0 0 0 16-3584
+chrM 10918 2 0 1 0 1 0 0 16-3584
+chrM 10919 2 0 2 0 0 0 0 16-3584
+chrM 10920 2 0 1 1 0 0 0 16-3584
+chrM 10921 2 0 2 0 0 0 0 16-3584
+chrM 10922 2 1 0 1 0 0 0 16-3584
+chrM 10923 2 1 0 1 0 0 0 16-3584
+chrM 10924 2 1 0 1 0 0 0 16-3584
+chrM 10925 2 0 0 2 0 0 0 16-3584
+chrM 10926 2 0 2 0 0 0 0 16-3584
+chrM 10927 2 0 0 2 0 0 0 16-3584
+chrM 10928 2 1 0 1 0 0 0 16-3584
+chrM 10929 2 1 1 0 0 0 0 16-3584
+chrM 10930 2 1 0 0 1 0 0 16-3584
+chrM 10931 2 1 0 1 0 0 0 16-3584
+chrM 10932 2 1 1 0 0 0 0 16-3584
+chrM 10933 2 1 0 1 0 0 0 16-3584
+chrM 10934 2 0 1 1 0 0 0 16-3584
+chrM 10935 2 1 1 0 0 0 0 16-3584
+chrM 10936 2 1 0 0 1 0 0 16-3584
+chrM 10937 2 0 2 0 0 0 0 16-3584
+chrM 10938 2 1 0 0 1 0 0 16-3584
+chrM 10939 2 0 0 1 1 0 0 16-3584
+chrM 10940 2 0 0 1 1 0 0 16-3584
+chrM 10941 2 0 1 1 0 0 0 16-3584
+chrM 10942 2 0 1 0 1 0 0 16-3584
+chrM 10943 2 0 1 0 1 0 0 16-3584
+chrM 10944 2 2 0 0 0 0 0 16-3584
+chrM 10945 2 1 0 1 0 0 0 16-3584
+chrM 10946 2 1 1 0 0 0 0 16-3584
+chrM 10947 2 0 0 1 1 0 0 16-3584
+chrM 10948 2 0 1 1 0 0 0 16-3584
+chrM 10949 2 1 1 0 0 0 0 16-3584
+chrM 10950 2 1 0 0 1 0 0 16-3584
+chrM 10951 2 0 1 0 1 0 0 16-3584
+chrM 10952 2 0 0 0 2 0 0 16-3584
+chrM 10953 2 0 0 1 1 0 0 16-3584
+chrM 10954 2 0 0 2 0 0 0 16-3584
+chrM 10955 2 2 0 0 0 0 0 16-3584
+chrM 10956 2 0 1 0 1 0 0 16-3584
+chrM 10957 2 0 0 2 0 0 0 16-3584
+chrM 10958 2 0 1 0 1 0 0 16-3584
+chrM 10959 2 0 1 0 1 0 0 16-3584
+chrM 10960 2 1 0 0 1 0 0 16-3584
+chrM 10961 2 1 1 0 0 0 0 16-3584
+chrM 10962 2 1 0 0 1 0 0 16-3584
+chrM 10963 2 1 0 0 1 0 0 16-3584
+chrM 10964 2 0 0 0 2 0 0 16-3584
+chrM 10965 2 1 1 0 0 0 0 16-3584
+chrM 10966 2 0 1 1 0 0 0 16-3584
+chrM 10967 2 0 1 0 1 0 0 16-3584
+chrM 10968 2 0 1 0 1 0 0 16-3584
+chrM 10969 2 0 1 1 0 0 0 16-3584
+chrM 10970 2 0 0 1 1 0 0 16-3584
+chrM 10971 2 1 1 0 0 0 0 16-3584
+chrM 10972 2 0 0 1 1 0 0 16-3584
+chrM 10973 2 2 0 0 0 0 0 16-3584
+chrM 10974 2 2 0 0 0 0 0 16-3584
+chrM 10975 2 1 0 1 0 0 0 16-3584
+chrM 10976 2 0 2 0 0 0 0 16-3584
+chrM 10977 2 1 0 1 0 0 0 16-3584
+chrM 10978 2 1 0 0 1 0 0 16-3584
+chrM 10979 2 0 0 0 2 0 0 16-3584
+chrM 10980 2 2 0 0 0 0 0 16-3584
+chrM 10981 2 0 2 0 0 0 0 16-3584
+chrM 10982 2 1 1 0 0 0 0 16-3584
+chrM 10983 2 1 1 0 0 0 0 16-3584
+chrM 10984 1 0 0 0 1 0 0 16-3584
+chrM 10985 1 1 0 0 0 0 0 16-3584
+chrM 10986 1 0 1 0 0 0 0 16-3584
+chrM 10987 1 0 1 0 0 0 0 16-3584
+chrM 10988 1 1 0 0 0 0 0 16-3584
+chrM 10989 0 0 0 0 0 0 0 16-3584
+chrM 10990 0 0 0 0 0 0 0 16-3584
+chrM 10991 0 0 0 0 0 0 0 16-3584
+chrM 10992 0 0 0 0 0 0 0 16-3584
+chrM 10993 0 0 0 0 0 0 0 16-3584
+chrM 10994 0 0 0 0 0 0 0 16-3584
+chrM 10995 0 0 0 0 0 0 0 16-3584
+chrM 10996 0 0 0 0 0 0 0 16-3584
+chrM 10997 0 0 0 0 0 0 0 16-3584
+chrM 10998 0 0 0 0 0 0 0 16-3584
+chrM 10999 0 0 0 0 0 0 0 16-3584
+chrM 11000 0 0 0 0 0 0 0 16-3584
+chrM 11001 0 0 0 0 0 0 0 16-3584
+chrM 11002 0 0 0 0 0 0 0 16-3584
+chrM 11003 0 0 0 0 0 0 0 16-3584
+chrM 11004 0 0 0 0 0 0 0 16-3584
+chrM 11005 0 0 0 0 0 0 0 16-3584
+chrM 11006 0 0 0 0 0 0 0 16-3584
+chrM 11007 0 0 0 0 0 0 0 16-3584
+chrM 11008 0 0 0 0 0 0 0 16-3584
+chrM 11009 0 0 0 0 0 0 0 16-3584
+chrM 11010 0 0 0 0 0 0 0 16-3584
+chrM 11011 0 0 0 0 0 0 0 16-3584
+chrM 11012 0 0 0 0 0 0 0 16-3584
+chrM 11013 0 0 0 0 0 0 0 16-3584
+chrM 11014 0 0 0 0 0 0 0 16-3584
+chrM 11015 0 0 0 0 0 0 0 16-3584
+chrM 11016 0 0 0 0 0 0 0 16-3584
+chrM 11017 0 0 0 0 0 0 0 16-3584
+chrM 11018 0 0 0 0 0 0 0 16-3584
+chrM 11019 0 0 0 0 0 0 0 16-3584
+chrM 11020 0 0 0 0 0 0 0 16-3584
+chrM 11021 0 0 0 0 0 0 0 16-3584
+chrM 11022 0 0 0 0 0 0 0 16-3584
+chrM 11023 0 0 0 0 0 0 0 16-3584
+chrM 11024 0 0 0 0 0 0 0 16-3584
+chrM 11025 0 0 0 0 0 0 0 16-3584
+chrM 11026 0 0 0 0 0 0 0 16-3584
+chrM 11027 0 0 0 0 0 0 0 16-3584
+chrM 11028 0 0 0 0 0 0 0 16-3584
+chrM 11029 0 0 0 0 0 0 0 16-3584
+chrM 11030 0 0 0 0 0 0 0 16-3584
+chrM 11031 0 0 0 0 0 0 0 16-3584
+chrM 11032 0 0 0 0 0 0 0 16-3584
+chrM 11033 0 0 0 0 0 0 0 16-3584
+chrM 11034 0 0 0 0 0 0 0 16-3584
+chrM 11035 0 0 0 0 0 0 0 16-3584
+chrM 11036 0 0 0 0 0 0 0 16-3584
+chrM 11037 0 0 0 0 0 0 0 16-3584
+chrM 11038 0 0 0 0 0 0 0 16-3584
+chrM 11039 0 0 0 0 0 0 0 16-3584
+chrM 11040 0 0 0 0 0 0 0 16-3584
+chrM 11041 0 0 0 0 0 0 0 16-3584
+chrM 11042 0 0 0 0 0 0 0 16-3584
+chrM 11043 0 0 0 0 0 0 0 16-3584
+chrM 11044 0 0 0 0 0 0 0 16-3584
+chrM 11045 0 0 0 0 0 0 0 16-3584
+chrM 11046 0 0 0 0 0 0 0 16-3584
+chrM 11047 0 0 0 0 0 0 0 16-3584
+chrM 11048 0 0 0 0 0 0 0 16-3584
+chrM 11049 0 0 0 0 0 0 0 16-3584
+chrM 11050 0 0 0 0 0 0 0 16-3584
+chrM 11051 0 0 0 0 0 0 0 16-3584
+chrM 11052 0 0 0 0 0 0 0 16-3584
+chrM 11053 0 0 0 0 0 0 0 16-3584
+chrM 11054 0 0 0 0 0 0 0 16-3584
+chrM 11055 0 0 0 0 0 0 0 16-3584
+chrM 11056 0 0 0 0 0 0 0 16-3584
+chrM 11057 0 0 0 0 0 0 0 16-3584
+chrM 11058 0 0 0 0 0 0 0 16-3584
+chrM 11059 0 0 0 0 0 0 0 16-3584
+chrM 11060 0 0 0 0 0 0 0 16-3584
+chrM 11061 0 0 0 0 0 0 0 16-3584
+chrM 11062 0 0 0 0 0 0 0 16-3584
+chrM 11063 0 0 0 0 0 0 0 16-3584
+chrM 11064 0 0 0 0 0 0 0 16-3584
+chrM 11065 0 0 0 0 0 0 0 16-3584
+chrM 11066 0 0 0 0 0 0 0 16-3584
+chrM 11067 0 0 0 0 0 0 0 16-3584
+chrM 11068 0 0 0 0 0 0 0 16-3584
+chrM 11069 0 0 0 0 0 0 0 16-3584
+chrM 11070 0 0 0 0 0 0 0 16-3584
+chrM 11071 0 0 0 0 0 0 0 16-3584
+chrM 11072 0 0 0 0 0 0 0 16-3584
+chrM 11073 0 0 0 0 0 0 0 16-3584
+chrM 11074 0 0 0 0 0 0 0 16-3584
+chrM 11075 0 0 0 0 0 0 0 16-3584
+chrM 11076 0 0 0 0 0 0 0 16-3584
+chrM 11077 0 0 0 0 0 0 0 16-3584
+chrM 11078 0 0 0 0 0 0 0 16-3584
+chrM 11079 0 0 0 0 0 0 0 16-3584
+chrM 11080 0 0 0 0 0 0 0 16-3584
+chrM 11081 0 0 0 0 0 0 0 16-3584
+chrM 11082 0 0 0 0 0 0 0 16-3584
+chrM 11083 0 0 0 0 0 0 0 16-3584
+chrM 11084 0 0 0 0 0 0 0 16-3584
+chrM 11085 0 0 0 0 0 0 0 16-3584
+chrM 11086 0 0 0 0 0 0 0 16-3584
+chrM 11087 0 0 0 0 0 0 0 16-3584
+chrM 11088 0 0 0 0 0 0 0 16-3584
+chrM 11089 0 0 0 0 0 0 0 16-3584
+chrM 11090 0 0 0 0 0 0 0 16-3584
+chrM 11091 0 0 0 0 0 0 0 16-3584
+chrM 11092 0 0 0 0 0 0 0 16-3584
+chrM 11093 0 0 0 0 0 0 0 16-3584
+chrM 11094 0 0 0 0 0 0 0 16-3584
+chrM 11095 0 0 0 0 0 0 0 16-3584
+chrM 11096 0 0 0 0 0 0 0 16-3584
+chrM 11097 0 0 0 0 0 0 0 16-3584
+chrM 11098 0 0 0 0 0 0 0 16-3584
+chrM 11099 0 0 0 0 0 0 0 16-3584
+chrM 11100 0 0 0 0 0 0 0 16-3584
+chrM 11101 0 0 0 0 0 0 0 16-3584
+chrM 11102 0 0 0 0 0 0 0 16-3584
+chrM 11103 0 0 0 0 0 0 0 16-3584
+chrM 11104 0 0 0 0 0 0 0 16-3584
+chrM 11105 0 0 0 0 0 0 0 16-3584
+chrM 11106 0 0 0 0 0 0 0 16-3584
+chrM 11107 0 0 0 0 0 0 0 16-3584
+chrM 11108 0 0 0 0 0 0 0 16-3584
+chrM 11109 0 0 0 0 0 0 0 16-3584
+chrM 11110 0 0 0 0 0 0 0 16-3584
+chrM 11111 0 0 0 0 0 0 0 16-3584
+chrM 11112 0 0 0 0 0 0 0 16-3584
+chrM 11113 0 0 0 0 0 0 0 16-3584
+chrM 11114 0 0 0 0 0 0 0 16-3584
+chrM 11115 0 0 0 0 0 0 0 16-3584
+chrM 11116 0 0 0 0 0 0 0 16-3584
+chrM 11117 0 0 0 0 0 0 0 16-3584
+chrM 11118 0 0 0 0 0 0 0 16-3584
+chrM 11119 0 0 0 0 0 0 0 16-3584
+chrM 11120 0 0 0 0 0 0 0 16-3584
+chrM 11121 0 0 0 0 0 0 0 16-3584
+chrM 11122 0 0 0 0 0 0 0 16-3584
+chrM 11123 0 0 0 0 0 0 0 16-3584
+chrM 11124 0 0 0 0 0 0 0 16-3584
+chrM 11125 0 0 0 0 0 0 0 16-3584
+chrM 11126 0 0 0 0 0 0 0 16-3584
+chrM 11127 0 0 0 0 0 0 0 16-3584
+chrM 11128 0 0 0 0 0 0 0 16-3584
+chrM 11129 0 0 0 0 0 0 0 16-3584
+chrM 11130 0 0 0 0 0 0 0 16-3584
+chrM 11131 0 0 0 0 0 0 0 16-3584
+chrM 11132 0 0 0 0 0 0 0 16-3584
+chrM 11133 0 0 0 0 0 0 0 16-3584
+chrM 11134 0 0 0 0 0 0 0 16-3584
+chrM 11135 0 0 0 0 0 0 0 16-3584
+chrM 11136 0 0 0 0 0 0 0 16-3584
+chrM 11137 0 0 0 0 0 0 0 16-3584
+chrM 11138 0 0 0 0 0 0 0 16-3584
+chrM 11139 0 0 0 0 0 0 0 16-3584
+chrM 11140 0 0 0 0 0 0 0 16-3584
+chrM 11141 0 0 0 0 0 0 0 16-3584
+chrM 11142 0 0 0 0 0 0 0 16-3584
+chrM 11143 0 0 0 0 0 0 0 16-3584
+chrM 11144 0 0 0 0 0 0 0 16-3584
+chrM 11145 0 0 0 0 0 0 0 16-3584
+chrM 11146 0 0 0 0 0 0 0 16-3584
+chrM 11147 0 0 0 0 0 0 0 16-3584
+chrM 11148 0 0 0 0 0 0 0 16-3584
+chrM 11149 0 0 0 0 0 0 0 16-3584
+chrM 11150 0 0 0 0 0 0 0 16-3584
+chrM 11151 0 0 0 0 0 0 0 16-3584
+chrM 11152 0 0 0 0 0 0 0 16-3584
+chrM 11153 0 0 0 0 0 0 0 16-3584
+chrM 11154 0 0 0 0 0 0 0 16-3584
+chrM 11155 0 0 0 0 0 0 0 16-3584
+chrM 11156 0 0 0 0 0 0 0 16-3584
+chrM 11157 0 0 0 0 0 0 0 16-3584
+chrM 11158 0 0 0 0 0 0 0 16-3584
+chrM 11159 0 0 0 0 0 0 0 16-3584
+chrM 11160 0 0 0 0 0 0 0 16-3584
+chrM 11161 0 0 0 0 0 0 0 16-3584
+chrM 11162 0 0 0 0 0 0 0 16-3584
+chrM 11163 0 0 0 0 0 0 0 16-3584
+chrM 11164 0 0 0 0 0 0 0 16-3584
+chrM 11165 0 0 0 0 0 0 0 16-3584
+chrM 11166 0 0 0 0 0 0 0 16-3584
+chrM 11167 0 0 0 0 0 0 0 16-3584
+chrM 11168 0 0 0 0 0 0 0 16-3584
+chrM 11169 0 0 0 0 0 0 0 16-3584
+chrM 11170 0 0 0 0 0 0 0 16-3584
+chrM 11171 0 0 0 0 0 0 0 16-3584
+chrM 11172 0 0 0 0 0 0 0 16-3584
+chrM 11173 0 0 0 0 0 0 0 16-3584
+chrM 11174 0 0 0 0 0 0 0 16-3584
+chrM 11175 0 0 0 0 0 0 0 16-3584
+chrM 11176 0 0 0 0 0 0 0 16-3584
+chrM 11177 0 0 0 0 0 0 0 16-3584
+chrM 11178 0 0 0 0 0 0 0 16-3584
+chrM 11179 0 0 0 0 0 0 0 16-3584
+chrM 11180 0 0 0 0 0 0 0 16-3584
+chrM 11181 0 0 0 0 0 0 0 16-3584
+chrM 11182 0 0 0 0 0 0 0 16-3584
+chrM 11183 0 0 0 0 0 0 0 16-3584
+chrM 11184 0 0 0 0 0 0 0 16-3584
+chrM 11185 0 0 0 0 0 0 0 16-3584
+chrM 11186 0 0 0 0 0 0 0 16-3584
+chrM 11187 0 0 0 0 0 0 0 16-3584
+chrM 11188 0 0 0 0 0 0 0 16-3584
+chrM 11189 0 0 0 0 0 0 0 16-3584
+chrM 11190 0 0 0 0 0 0 0 16-3584
+chrM 11191 0 0 0 0 0 0 0 16-3584
+chrM 11192 0 0 0 0 0 0 0 16-3584
+chrM 11193 0 0 0 0 0 0 0 16-3584
+chrM 11194 0 0 0 0 0 0 0 16-3584
+chrM 11195 0 0 0 0 0 0 0 16-3584
+chrM 11196 0 0 0 0 0 0 0 16-3584
+chrM 11197 0 0 0 0 0 0 0 16-3584
+chrM 11198 0 0 0 0 0 0 0 16-3584
+chrM 11199 0 0 0 0 0 0 0 16-3584
+chrM 11200 0 0 0 0 0 0 0 16-3584
+chrM 11201 0 0 0 0 0 0 0 16-3584
+chrM 11202 0 0 0 0 0 0 0 16-3584
+chrM 11203 0 0 0 0 0 0 0 16-3584
+chrM 11204 0 0 0 0 0 0 0 16-3584
+chrM 11205 0 0 0 0 0 0 0 16-3584
+chrM 11206 0 0 0 0 0 0 0 16-3584
+chrM 11207 0 0 0 0 0 0 0 16-3584
+chrM 11208 0 0 0 0 0 0 0 16-3584
+chrM 11209 0 0 0 0 0 0 0 16-3584
+chrM 11210 0 0 0 0 0 0 0 16-3584
+chrM 11211 0 0 0 0 0 0 0 16-3584
+chrM 11212 0 0 0 0 0 0 0 16-3584
+chrM 11213 0 0 0 0 0 0 0 16-3584
+chrM 11214 0 0 0 0 0 0 0 16-3584
+chrM 11215 0 0 0 0 0 0 0 16-3584
+chrM 11216 0 0 0 0 0 0 0 16-3584
+chrM 11217 0 0 0 0 0 0 0 16-3584
+chrM 11218 0 0 0 0 0 0 0 16-3584
+chrM 11219 0 0 0 0 0 0 0 16-3584
+chrM 11220 0 0 0 0 0 0 0 16-3584
+chrM 11221 0 0 0 0 0 0 0 16-3584
+chrM 11222 0 0 0 0 0 0 0 16-3584
+chrM 11223 0 0 0 0 0 0 0 16-3584
+chrM 11224 0 0 0 0 0 0 0 16-3584
+chrM 11225 0 0 0 0 0 0 0 16-3584
+chrM 11226 0 0 0 0 0 0 0 16-3584
+chrM 11227 0 0 0 0 0 0 0 16-3584
+chrM 11228 0 0 0 0 0 0 0 16-3584
+chrM 11229 0 0 0 0 0 0 0 16-3584
+chrM 11230 0 0 0 0 0 0 0 16-3584
+chrM 11231 0 0 0 0 0 0 0 16-3584
+chrM 11232 0 0 0 0 0 0 0 16-3584
+chrM 11233 0 0 0 0 0 0 0 16-3584
+chrM 11234 0 0 0 0 0 0 0 16-3584
+chrM 11235 0 0 0 0 0 0 0 16-3584
+chrM 11236 0 0 0 0 0 0 0 16-3584
+chrM 11237 0 0 0 0 0 0 0 16-3584
+chrM 11238 0 0 0 0 0 0 0 16-3584
+chrM 11239 0 0 0 0 0 0 0 16-3584
+chrM 11240 0 0 0 0 0 0 0 16-3584
+chrM 11241 0 0 0 0 0 0 0 16-3584
+chrM 11242 0 0 0 0 0 0 0 16-3584
+chrM 11243 0 0 0 0 0 0 0 16-3584
+chrM 11244 0 0 0 0 0 0 0 16-3584
+chrM 11245 0 0 0 0 0 0 0 16-3584
+chrM 11246 0 0 0 0 0 0 0 16-3584
+chrM 11247 0 0 0 0 0 0 0 16-3584
+chrM 11248 0 0 0 0 0 0 0 16-3584
+chrM 11249 0 0 0 0 0 0 0 16-3584
+chrM 11250 0 0 0 0 0 0 0 16-3584
+chrM 11251 0 0 0 0 0 0 0 16-3584
+chrM 11252 0 0 0 0 0 0 0 16-3584
+chrM 11253 0 0 0 0 0 0 0 16-3584
+chrM 11254 0 0 0 0 0 0 0 16-3584
+chrM 11255 0 0 0 0 0 0 0 16-3584
+chrM 11256 0 0 0 0 0 0 0 16-3584
+chrM 11257 0 0 0 0 0 0 0 16-3584
+chrM 11258 0 0 0 0 0 0 0 16-3584
+chrM 11259 0 0 0 0 0 0 0 16-3584
+chrM 11260 0 0 0 0 0 0 0 16-3584
+chrM 11261 0 0 0 0 0 0 0 16-3584
+chrM 11262 0 0 0 0 0 0 0 16-3584
+chrM 11263 0 0 0 0 0 0 0 16-3584
+chrM 11264 0 0 0 0 0 0 0 16-3584
+chrM 11265 0 0 0 0 0 0 0 16-3584
+chrM 11266 0 0 0 0 0 0 0 16-3584
+chrM 11267 0 0 0 0 0 0 0 16-3584
+chrM 11268 0 0 0 0 0 0 0 16-3584
+chrM 11269 0 0 0 0 0 0 0 16-3584
+chrM 11270 0 0 0 0 0 0 0 16-3584
+chrM 11271 0 0 0 0 0 0 0 16-3584
+chrM 11272 0 0 0 0 0 0 0 16-3584
+chrM 11273 0 0 0 0 0 0 0 16-3584
+chrM 11274 0 0 0 0 0 0 0 16-3584
+chrM 11275 0 0 0 0 0 0 0 16-3584
+chrM 11276 0 0 0 0 0 0 0 16-3584
+chrM 11277 0 0 0 0 0 0 0 16-3584
+chrM 11278 0 0 0 0 0 0 0 16-3584
+chrM 11279 0 0 0 0 0 0 0 16-3584
+chrM 11280 0 0 0 0 0 0 0 16-3584
+chrM 11281 0 0 0 0 0 0 0 16-3584
+chrM 11282 0 0 0 0 0 0 0 16-3584
+chrM 11283 0 0 0 0 0 0 0 16-3584
+chrM 11284 0 0 0 0 0 0 0 16-3584
+chrM 11285 0 0 0 0 0 0 0 16-3584
+chrM 11286 0 0 0 0 0 0 0 16-3584
+chrM 11287 0 0 0 0 0 0 0 16-3584
+chrM 11288 0 0 0 0 0 0 0 16-3584
+chrM 11289 0 0 0 0 0 0 0 16-3584
+chrM 11290 0 0 0 0 0 0 0 16-3584
+chrM 11291 0 0 0 0 0 0 0 16-3584
+chrM 11292 0 0 0 0 0 0 0 16-3584
+chrM 11293 0 0 0 0 0 0 0 16-3584
+chrM 11294 0 0 0 0 0 0 0 16-3584
+chrM 11295 0 0 0 0 0 0 0 16-3584
+chrM 11296 0 0 0 0 0 0 0 16-3584
+chrM 11297 0 0 0 0 0 0 0 16-3584
+chrM 11298 0 0 0 0 0 0 0 16-3584
+chrM 11299 0 0 0 0 0 0 0 16-3584
+chrM 11300 0 0 0 0 0 0 0 16-3584
+chrM 11301 0 0 0 0 0 0 0 16-3584
+chrM 11302 0 0 0 0 0 0 0 16-3584
+chrM 11303 0 0 0 0 0 0 0 16-3584
+chrM 11304 0 0 0 0 0 0 0 16-3584
+chrM 11305 0 0 0 0 0 0 0 16-3584
+chrM 11306 0 0 0 0 0 0 0 16-3584
+chrM 11307 0 0 0 0 0 0 0 16-3584
+chrM 11308 0 0 0 0 0 0 0 16-3584
+chrM 11309 0 0 0 0 0 0 0 16-3584
+chrM 11310 0 0 0 0 0 0 0 16-3584
+chrM 11311 0 0 0 0 0 0 0 16-3584
+chrM 11312 0 0 0 0 0 0 0 16-3584
+chrM 11313 0 0 0 0 0 0 0 16-3584
+chrM 11314 0 0 0 0 0 0 0 16-3584
+chrM 11315 0 0 0 0 0 0 0 16-3584
+chrM 11316 0 0 0 0 0 0 0 16-3584
+chrM 11317 0 0 0 0 0 0 0 16-3584
+chrM 11318 0 0 0 0 0 0 0 16-3584
+chrM 11319 0 0 0 0 0 0 0 16-3584
+chrM 11320 0 0 0 0 0 0 0 16-3584
+chrM 11321 0 0 0 0 0 0 0 16-3584
+chrM 11322 0 0 0 0 0 0 0 16-3584
+chrM 11323 0 0 0 0 0 0 0 16-3584
+chrM 11324 0 0 0 0 0 0 0 16-3584
+chrM 11325 0 0 0 0 0 0 0 16-3584
+chrM 11326 0 0 0 0 0 0 0 16-3584
+chrM 11327 0 0 0 0 0 0 0 16-3584
+chrM 11328 0 0 0 0 0 0 0 16-3584
+chrM 11329 0 0 0 0 0 0 0 16-3584
+chrM 11330 0 0 0 0 0 0 0 16-3584
+chrM 11331 0 0 0 0 0 0 0 16-3584
+chrM 11332 0 0 0 0 0 0 0 16-3584
+chrM 11333 0 0 0 0 0 0 0 16-3584
+chrM 11334 0 0 0 0 0 0 0 16-3584
+chrM 11335 0 0 0 0 0 0 0 16-3584
+chrM 11336 0 0 0 0 0 0 0 16-3584
+chrM 11337 0 0 0 0 0 0 0 16-3584
+chrM 11338 0 0 0 0 0 0 0 16-3584
+chrM 11339 0 0 0 0 0 0 0 16-3584
+chrM 11340 0 0 0 0 0 0 0 16-3584
+chrM 11341 0 0 0 0 0 0 0 16-3584
+chrM 11342 0 0 0 0 0 0 0 16-3584
+chrM 11343 0 0 0 0 0 0 0 16-3584
+chrM 11344 0 0 0 0 0 0 0 16-3584
+chrM 11345 0 0 0 0 0 0 0 16-3584
+chrM 11346 0 0 0 0 0 0 0 16-3584
+chrM 11347 0 0 0 0 0 0 0 16-3584
+chrM 11348 0 0 0 0 0 0 0 16-3584
+chrM 11349 0 0 0 0 0 0 0 16-3584
+chrM 11350 0 0 0 0 0 0 0 16-3584
+chrM 11351 0 0 0 0 0 0 0 16-3584
+chrM 11352 0 0 0 0 0 0 0 16-3584
+chrM 11353 0 0 0 0 0 0 0 16-3584
+chrM 11354 0 0 0 0 0 0 0 16-3584
+chrM 11355 0 0 0 0 0 0 0 16-3584
+chrM 11356 0 0 0 0 0 0 0 16-3584
+chrM 11357 0 0 0 0 0 0 0 16-3584
+chrM 11358 0 0 0 0 0 0 0 16-3584
+chrM 11359 0 0 0 0 0 0 0 16-3584
+chrM 11360 0 0 0 0 0 0 0 16-3584
+chrM 11361 0 0 0 0 0 0 0 16-3584
+chrM 11362 0 0 0 0 0 0 0 16-3584
+chrM 11363 0 0 0 0 0 0 0 16-3584
+chrM 11364 0 0 0 0 0 0 0 16-3584
+chrM 11365 0 0 0 0 0 0 0 16-3584
+chrM 11366 0 0 0 0 0 0 0 16-3584
+chrM 11367 0 0 0 0 0 0 0 16-3584
+chrM 11368 0 0 0 0 0 0 0 16-3584
+chrM 11369 0 0 0 0 0 0 0 16-3584
+chrM 11370 0 0 0 0 0 0 0 16-3584
+chrM 11371 0 0 0 0 0 0 0 16-3584
+chrM 11372 0 0 0 0 0 0 0 16-3584
+chrM 11373 0 0 0 0 0 0 0 16-3584
+chrM 11374 0 0 0 0 0 0 0 16-3584
+chrM 11375 0 0 0 0 0 0 0 16-3584
+chrM 11376 0 0 0 0 0 0 0 16-3584
+chrM 11377 0 0 0 0 0 0 0 16-3584
+chrM 11378 0 0 0 0 0 0 0 16-3584
+chrM 11379 0 0 0 0 0 0 0 16-3584
+chrM 11380 0 0 0 0 0 0 0 16-3584
+chrM 11381 0 0 0 0 0 0 0 16-3584
+chrM 11382 0 0 0 0 0 0 0 16-3584
+chrM 11383 0 0 0 0 0 0 0 16-3584
+chrM 11384 0 0 0 0 0 0 0 16-3584
+chrM 11385 0 0 0 0 0 0 0 16-3584
+chrM 11386 0 0 0 0 0 0 0 16-3584
+chrM 11387 0 0 0 0 0 0 0 16-3584
+chrM 11388 0 0 0 0 0 0 0 16-3584
+chrM 11389 0 0 0 0 0 0 0 16-3584
+chrM 11390 0 0 0 0 0 0 0 16-3584
+chrM 11391 0 0 0 0 0 0 0 16-3584
+chrM 11392 0 0 0 0 0 0 0 16-3584
+chrM 11393 0 0 0 0 0 0 0 16-3584
+chrM 11394 0 0 0 0 0 0 0 16-3584
+chrM 11395 0 0 0 0 0 0 0 16-3584
+chrM 11396 0 0 0 0 0 0 0 16-3584
+chrM 11397 0 0 0 0 0 0 0 16-3584
+chrM 11398 0 0 0 0 0 0 0 16-3584
+chrM 11399 0 0 0 0 0 0 0 16-3584
+chrM 11400 0 0 0 0 0 0 0 16-3584
+chrM 11401 0 0 0 0 0 0 0 16-3584
+chrM 11402 0 0 0 0 0 0 0 16-3584
+chrM 11403 0 0 0 0 0 0 0 16-3584
+chrM 11404 0 0 0 0 0 0 0 16-3584
+chrM 11405 0 0 0 0 0 0 0 16-3584
+chrM 11406 0 0 0 0 0 0 0 16-3584
+chrM 11407 0 0 0 0 0 0 0 16-3584
+chrM 11408 0 0 0 0 0 0 0 16-3584
+chrM 11409 0 0 0 0 0 0 0 16-3584
+chrM 11410 0 0 0 0 0 0 0 16-3584
+chrM 11411 0 0 0 0 0 0 0 16-3584
+chrM 11412 0 0 0 0 0 0 0 16-3584
+chrM 11413 0 0 0 0 0 0 0 16-3584
+chrM 11414 0 0 0 0 0 0 0 16-3584
+chrM 11415 0 0 0 0 0 0 0 16-3584
+chrM 11416 0 0 0 0 0 0 0 16-3584
+chrM 11417 0 0 0 0 0 0 0 16-3584
+chrM 11418 0 0 0 0 0 0 0 16-3584
+chrM 11419 0 0 0 0 0 0 0 16-3584
+chrM 11420 0 0 0 0 0 0 0 16-3584
+chrM 11421 0 0 0 0 0 0 0 16-3584
+chrM 11422 0 0 0 0 0 0 0 16-3584
+chrM 11423 0 0 0 0 0 0 0 16-3584
+chrM 11424 0 0 0 0 0 0 0 16-3584
+chrM 11425 0 0 0 0 0 0 0 16-3584
+chrM 11426 0 0 0 0 0 0 0 16-3584
+chrM 11427 0 0 0 0 0 0 0 16-3584
+chrM 11428 0 0 0 0 0 0 0 16-3584
+chrM 11429 0 0 0 0 0 0 0 16-3584
+chrM 11430 0 0 0 0 0 0 0 16-3584
+chrM 11431 0 0 0 0 0 0 0 16-3584
+chrM 11432 0 0 0 0 0 0 0 16-3584
+chrM 11433 0 0 0 0 0 0 0 16-3584
+chrM 11434 0 0 0 0 0 0 0 16-3584
+chrM 11435 0 0 0 0 0 0 0 16-3584
+chrM 11436 0 0 0 0 0 0 0 16-3584
+chrM 11437 0 0 0 0 0 0 0 16-3584
+chrM 11438 0 0 0 0 0 0 0 16-3584
+chrM 11439 0 0 0 0 0 0 0 16-3584
+chrM 11440 0 0 0 0 0 0 0 16-3584
+chrM 11441 0 0 0 0 0 0 0 16-3584
+chrM 11442 0 0 0 0 0 0 0 16-3584
+chrM 11443 0 0 0 0 0 0 0 16-3584
+chrM 11444 0 0 0 0 0 0 0 16-3584
+chrM 11445 0 0 0 0 0 0 0 16-3584
+chrM 11446 0 0 0 0 0 0 0 16-3584
+chrM 11447 0 0 0 0 0 0 0 16-3584
+chrM 11448 0 0 0 0 0 0 0 16-3584
+chrM 11449 0 0 0 0 0 0 0 16-3584
+chrM 11450 0 0 0 0 0 0 0 16-3584
+chrM 11451 0 0 0 0 0 0 0 16-3584
+chrM 11452 0 0 0 0 0 0 0 16-3584
+chrM 11453 0 0 0 0 0 0 0 16-3584
+chrM 11454 0 0 0 0 0 0 0 16-3584
+chrM 11455 0 0 0 0 0 0 0 16-3584
+chrM 11456 0 0 0 0 0 0 0 16-3584
+chrM 11457 0 0 0 0 0 0 0 16-3584
+chrM 11458 0 0 0 0 0 0 0 16-3584
+chrM 11459 0 0 0 0 0 0 0 16-3584
+chrM 11460 0 0 0 0 0 0 0 16-3584
+chrM 11461 0 0 0 0 0 0 0 16-3584
+chrM 11462 0 0 0 0 0 0 0 16-3584
+chrM 11463 0 0 0 0 0 0 0 16-3584
+chrM 11464 0 0 0 0 0 0 0 16-3584
+chrM 11465 0 0 0 0 0 0 0 16-3584
+chrM 11466 0 0 0 0 0 0 0 16-3584
+chrM 11467 0 0 0 0 0 0 0 16-3584
+chrM 11468 0 0 0 0 0 0 0 16-3584
+chrM 11469 0 0 0 0 0 0 0 16-3584
+chrM 11470 0 0 0 0 0 0 0 16-3584
+chrM 11471 0 0 0 0 0 0 0 16-3584
+chrM 11472 0 0 0 0 0 0 0 16-3584
+chrM 11473 0 0 0 0 0 0 0 16-3584
+chrM 11474 0 0 0 0 0 0 0 16-3584
+chrM 11475 0 0 0 0 0 0 0 16-3584
+chrM 11476 0 0 0 0 0 0 0 16-3584
+chrM 11477 0 0 0 0 0 0 0 16-3584
+chrM 11478 0 0 0 0 0 0 0 16-3584
+chrM 11479 0 0 0 0 0 0 0 16-3584
+chrM 11480 0 0 0 0 0 0 0 16-3584
+chrM 11481 0 0 0 0 0 0 0 16-3584
+chrM 11482 0 0 0 0 0 0 0 16-3584
+chrM 11483 0 0 0 0 0 0 0 16-3584
+chrM 11484 0 0 0 0 0 0 0 16-3584
+chrM 11485 0 0 0 0 0 0 0 16-3584
+chrM 11486 0 0 0 0 0 0 0 16-3584
+chrM 11487 0 0 0 0 0 0 0 16-3584
+chrM 11488 0 0 0 0 0 0 0 16-3584
+chrM 11489 0 0 0 0 0 0 0 16-3584
+chrM 11490 0 0 0 0 0 0 0 16-3584
+chrM 11491 0 0 0 0 0 0 0 16-3584
+chrM 11492 0 0 0 0 0 0 0 16-3584
+chrM 11493 0 0 0 0 0 0 0 16-3584
+chrM 11494 0 0 0 0 0 0 0 16-3584
+chrM 11495 0 0 0 0 0 0 0 16-3584
+chrM 11496 0 0 0 0 0 0 0 16-3584
+chrM 11497 0 0 0 0 0 0 0 16-3584
+chrM 11498 0 0 0 0 0 0 0 16-3584
+chrM 11499 0 0 0 0 0 0 0 16-3584
+chrM 11500 0 0 0 0 0 0 0 16-3584
+chrM 11501 0 0 0 0 0 0 0 16-3584
+chrM 11502 0 0 0 0 0 0 0 16-3584
+chrM 11503 0 0 0 0 0 0 0 16-3584
+chrM 11504 0 0 0 0 0 0 0 16-3584
+chrM 11505 0 0 0 0 0 0 0 16-3584
+chrM 11506 0 0 0 0 0 0 0 16-3584
+chrM 11507 0 0 0 0 0 0 0 16-3584
+chrM 11508 0 0 0 0 0 0 0 16-3584
+chrM 11509 0 0 0 0 0 0 0 16-3584
+chrM 11510 0 0 0 0 0 0 0 16-3584
+chrM 11511 0 0 0 0 0 0 0 16-3584
+chrM 11512 0 0 0 0 0 0 0 16-3584
+chrM 11513 0 0 0 0 0 0 0 16-3584
+chrM 11514 0 0 0 0 0 0 0 16-3584
+chrM 11515 0 0 0 0 0 0 0 16-3584
+chrM 11516 0 0 0 0 0 0 0 16-3584
+chrM 11517 0 0 0 0 0 0 0 16-3584
+chrM 11518 0 0 0 0 0 0 0 16-3584
+chrM 11519 0 0 0 0 0 0 0 16-3584
+chrM 11520 0 0 0 0 0 0 0 16-3584
+chrM 11521 0 0 0 0 0 0 0 16-3584
+chrM 11522 0 0 0 0 0 0 0 16-3584
+chrM 11523 0 0 0 0 0 0 0 16-3584
+chrM 11524 0 0 0 0 0 0 0 16-3584
+chrM 11525 0 0 0 0 0 0 0 16-3584
+chrM 11526 0 0 0 0 0 0 0 16-3584
+chrM 11527 0 0 0 0 0 0 0 16-3584
+chrM 11528 0 0 0 0 0 0 0 16-3584
+chrM 11529 0 0 0 0 0 0 0 16-3584
+chrM 11530 0 0 0 0 0 0 0 16-3584
+chrM 11531 0 0 0 0 0 0 0 16-3584
+chrM 11532 0 0 0 0 0 0 0 16-3584
+chrM 11533 0 0 0 0 0 0 0 16-3584
+chrM 11534 0 0 0 0 0 0 0 16-3584
+chrM 11535 0 0 0 0 0 0 0 16-3584
+chrM 11536 0 0 0 0 0 0 0 16-3584
+chrM 11537 0 0 0 0 0 0 0 16-3584
+chrM 11538 0 0 0 0 0 0 0 16-3584
+chrM 11539 0 0 0 0 0 0 0 16-3584
+chrM 11540 0 0 0 0 0 0 0 16-3584
+chrM 11541 0 0 0 0 0 0 0 16-3584
+chrM 11542 0 0 0 0 0 0 0 16-3584
+chrM 11543 0 0 0 0 0 0 0 16-3584
+chrM 11544 0 0 0 0 0 0 0 16-3584
+chrM 11545 0 0 0 0 0 0 0 16-3584
+chrM 11546 0 0 0 0 0 0 0 16-3584
+chrM 11547 0 0 0 0 0 0 0 16-3584
+chrM 11548 0 0 0 0 0 0 0 16-3584
+chrM 11549 0 0 0 0 0 0 0 16-3584
+chrM 11550 0 0 0 0 0 0 0 16-3584
+chrM 11551 0 0 0 0 0 0 0 16-3584
+chrM 11552 0 0 0 0 0 0 0 16-3584
+chrM 11553 0 0 0 0 0 0 0 16-3584
+chrM 11554 0 0 0 0 0 0 0 16-3584
+chrM 11555 0 0 0 0 0 0 0 16-3584
+chrM 11556 0 0 0 0 0 0 0 16-3584
+chrM 11557 0 0 0 0 0 0 0 16-3584
+chrM 11558 0 0 0 0 0 0 0 16-3584
+chrM 11559 0 0 0 0 0 0 0 16-3584
+chrM 11560 0 0 0 0 0 0 0 16-3584
+chrM 11561 0 0 0 0 0 0 0 16-3584
+chrM 11562 0 0 0 0 0 0 0 16-3584
+chrM 11563 0 0 0 0 0 0 0 16-3584
+chrM 11564 0 0 0 0 0 0 0 16-3584
+chrM 11565 0 0 0 0 0 0 0 16-3584
+chrM 11566 0 0 0 0 0 0 0 16-3584
+chrM 11567 0 0 0 0 0 0 0 16-3584
+chrM 11568 0 0 0 0 0 0 0 16-3584
+chrM 11569 0 0 0 0 0 0 0 16-3584
+chrM 11570 0 0 0 0 0 0 0 16-3584
+chrM 11571 0 0 0 0 0 0 0 16-3584
+chrM 11572 0 0 0 0 0 0 0 16-3584
+chrM 11573 0 0 0 0 0 0 0 16-3584
+chrM 11574 0 0 0 0 0 0 0 16-3584
+chrM 11575 0 0 0 0 0 0 0 16-3584
+chrM 11576 0 0 0 0 0 0 0 16-3584
+chrM 11577 0 0 0 0 0 0 0 16-3584
+chrM 11578 0 0 0 0 0 0 0 16-3584
+chrM 11579 0 0 0 0 0 0 0 16-3584
+chrM 11580 0 0 0 0 0 0 0 16-3584
+chrM 11581 0 0 0 0 0 0 0 16-3584
+chrM 11582 0 0 0 0 0 0 0 16-3584
+chrM 11583 0 0 0 0 0 0 0 16-3584
+chrM 11584 0 0 0 0 0 0 0 16-3584
+chrM 11585 0 0 0 0 0 0 0 16-3584
+chrM 11586 0 0 0 0 0 0 0 16-3584
+chrM 11587 0 0 0 0 0 0 0 16-3584
+chrM 11588 0 0 0 0 0 0 0 16-3584
+chrM 11589 0 0 0 0 0 0 0 16-3584
+chrM 11590 0 0 0 0 0 0 0 16-3584
+chrM 11591 0 0 0 0 0 0 0 16-3584
+chrM 11592 0 0 0 0 0 0 0 16-3584
+chrM 11593 0 0 0 0 0 0 0 16-3584
+chrM 11594 0 0 0 0 0 0 0 16-3584
+chrM 11595 0 0 0 0 0 0 0 16-3584
+chrM 11596 0 0 0 0 0 0 0 16-3584
+chrM 11597 0 0 0 0 0 0 0 16-3584
+chrM 11598 0 0 0 0 0 0 0 16-3584
+chrM 11599 0 0 0 0 0 0 0 16-3584
+chrM 11600 0 0 0 0 0 0 0 16-3584
+chrM 11601 0 0 0 0 0 0 0 16-3584
+chrM 11602 0 0 0 0 0 0 0 16-3584
+chrM 11603 0 0 0 0 0 0 0 16-3584
+chrM 11604 0 0 0 0 0 0 0 16-3584
+chrM 11605 0 0 0 0 0 0 0 16-3584
+chrM 11606 0 0 0 0 0 0 0 16-3584
+chrM 11607 0 0 0 0 0 0 0 16-3584
+chrM 11608 0 0 0 0 0 0 0 16-3584
+chrM 11609 0 0 0 0 0 0 0 16-3584
+chrM 11610 0 0 0 0 0 0 0 16-3584
+chrM 11611 0 0 0 0 0 0 0 16-3584
+chrM 11612 0 0 0 0 0 0 0 16-3584
+chrM 11613 0 0 0 0 0 0 0 16-3584
+chrM 11614 0 0 0 0 0 0 0 16-3584
+chrM 11615 0 0 0 0 0 0 0 16-3584
+chrM 11616 0 0 0 0 0 0 0 16-3584
+chrM 11617 0 0 0 0 0 0 0 16-3584
+chrM 11618 0 0 0 0 0 0 0 16-3584
+chrM 11619 0 0 0 0 0 0 0 16-3584
+chrM 11620 0 0 0 0 0 0 0 16-3584
+chrM 11621 0 0 0 0 0 0 0 16-3584
+chrM 11622 0 0 0 0 0 0 0 16-3584
+chrM 11623 0 0 0 0 0 0 0 16-3584
+chrM 11624 0 0 0 0 0 0 0 16-3584
+chrM 11625 0 0 0 0 0 0 0 16-3584
+chrM 11626 0 0 0 0 0 0 0 16-3584
+chrM 11627 0 0 0 0 0 0 0 16-3584
+chrM 11628 0 0 0 0 0 0 0 16-3584
+chrM 11629 0 0 0 0 0 0 0 16-3584
+chrM 11630 0 0 0 0 0 0 0 16-3584
+chrM 11631 0 0 0 0 0 0 0 16-3584
+chrM 11632 0 0 0 0 0 0 0 16-3584
+chrM 11633 0 0 0 0 0 0 0 16-3584
+chrM 11634 0 0 0 0 0 0 0 16-3584
+chrM 11635 0 0 0 0 0 0 0 16-3584
+chrM 11636 0 0 0 0 0 0 0 16-3584
+chrM 11637 0 0 0 0 0 0 0 16-3584
+chrM 11638 0 0 0 0 0 0 0 16-3584
+chrM 11639 0 0 0 0 0 0 0 16-3584
+chrM 11640 0 0 0 0 0 0 0 16-3584
+chrM 11641 0 0 0 0 0 0 0 16-3584
+chrM 11642 0 0 0 0 0 0 0 16-3584
+chrM 11643 0 0 0 0 0 0 0 16-3584
+chrM 11644 0 0 0 0 0 0 0 16-3584
+chrM 11645 0 0 0 0 0 0 0 16-3584
+chrM 11646 0 0 0 0 0 0 0 16-3584
+chrM 11647 0 0 0 0 0 0 0 16-3584
+chrM 11648 0 0 0 0 0 0 0 16-3584
+chrM 11649 0 0 0 0 0 0 0 16-3584
+chrM 11650 0 0 0 0 0 0 0 16-3584
+chrM 11651 0 0 0 0 0 0 0 16-3584
+chrM 11652 0 0 0 0 0 0 0 16-3584
+chrM 11653 0 0 0 0 0 0 0 16-3584
+chrM 11654 0 0 0 0 0 0 0 16-3584
+chrM 11655 0 0 0 0 0 0 0 16-3584
+chrM 11656 0 0 0 0 0 0 0 16-3584
+chrM 11657 0 0 0 0 0 0 0 16-3584
+chrM 11658 0 0 0 0 0 0 0 16-3584
+chrM 11659 0 0 0 0 0 0 0 16-3584
+chrM 11660 0 0 0 0 0 0 0 16-3584
+chrM 11661 0 0 0 0 0 0 0 16-3584
+chrM 11662 0 0 0 0 0 0 0 16-3584
+chrM 11663 0 0 0 0 0 0 0 16-3584
+chrM 11664 0 0 0 0 0 0 0 16-3584
+chrM 11665 0 0 0 0 0 0 0 16-3584
+chrM 11666 0 0 0 0 0 0 0 16-3584
+chrM 11667 0 0 0 0 0 0 0 16-3584
+chrM 11668 0 0 0 0 0 0 0 16-3584
+chrM 11669 0 0 0 0 0 0 0 16-3584
+chrM 11670 0 0 0 0 0 0 0 16-3584
+chrM 11671 0 0 0 0 0 0 0 16-3584
+chrM 11672 0 0 0 0 0 0 0 16-3584
+chrM 11673 0 0 0 0 0 0 0 16-3584
+chrM 11674 0 0 0 0 0 0 0 16-3584
+chrM 11675 0 0 0 0 0 0 0 16-3584
+chrM 11676 0 0 0 0 0 0 0 16-3584
+chrM 11677 0 0 0 0 0 0 0 16-3584
+chrM 11678 0 0 0 0 0 0 0 16-3584
+chrM 11679 0 0 0 0 0 0 0 16-3584
+chrM 11680 0 0 0 0 0 0 0 16-3584
+chrM 11681 0 0 0 0 0 0 0 16-3584
+chrM 11682 0 0 0 0 0 0 0 16-3584
+chrM 11683 0 0 0 0 0 0 0 16-3584
+chrM 11684 0 0 0 0 0 0 0 16-3584
+chrM 11685 0 0 0 0 0 0 0 16-3584
+chrM 11686 0 0 0 0 0 0 0 16-3584
+chrM 11687 0 0 0 0 0 0 0 16-3584
+chrM 11688 0 0 0 0 0 0 0 16-3584
+chrM 11689 0 0 0 0 0 0 0 16-3584
+chrM 11690 0 0 0 0 0 0 0 16-3584
+chrM 11691 0 0 0 0 0 0 0 16-3584
+chrM 11692 0 0 0 0 0 0 0 16-3584
+chrM 11693 0 0 0 0 0 0 0 16-3584
+chrM 11694 0 0 0 0 0 0 0 16-3584
+chrM 11695 0 0 0 0 0 0 0 16-3584
+chrM 11696 0 0 0 0 0 0 0 16-3584
+chrM 11697 0 0 0 0 0 0 0 16-3584
+chrM 11698 0 0 0 0 0 0 0 16-3584
+chrM 11699 0 0 0 0 0 0 0 16-3584
+chrM 11700 0 0 0 0 0 0 0 16-3584
+chrM 11701 0 0 0 0 0 0 0 16-3584
+chrM 11702 0 0 0 0 0 0 0 16-3584
+chrM 11703 0 0 0 0 0 0 0 16-3584
+chrM 11704 0 0 0 0 0 0 0 16-3584
+chrM 11705 0 0 0 0 0 0 0 16-3584
+chrM 11706 0 0 0 0 0 0 0 16-3584
+chrM 11707 0 0 0 0 0 0 0 16-3584
+chrM 11708 0 0 0 0 0 0 0 16-3584
+chrM 11709 0 0 0 0 0 0 0 16-3584
+chrM 11710 0 0 0 0 0 0 0 16-3584
+chrM 11711 0 0 0 0 0 0 0 16-3584
+chrM 11712 0 0 0 0 0 0 0 16-3584
+chrM 11713 0 0 0 0 0 0 0 16-3584
+chrM 11714 0 0 0 0 0 0 0 16-3584
+chrM 11715 0 0 0 0 0 0 0 16-3584
+chrM 11716 0 0 0 0 0 0 0 16-3584
+chrM 11717 0 0 0 0 0 0 0 16-3584
+chrM 11718 0 0 0 0 0 0 0 16-3584
+chrM 11719 0 0 0 0 0 0 0 16-3584
+chrM 11720 0 0 0 0 0 0 0 16-3584
+chrM 11721 0 0 0 0 0 0 0 16-3584
+chrM 11722 0 0 0 0 0 0 0 16-3584
+chrM 11723 0 0 0 0 0 0 0 16-3584
+chrM 11724 0 0 0 0 0 0 0 16-3584
+chrM 11725 0 0 0 0 0 0 0 16-3584
+chrM 11726 0 0 0 0 0 0 0 16-3584
+chrM 11727 0 0 0 0 0 0 0 16-3584
+chrM 11728 0 0 0 0 0 0 0 16-3584
+chrM 11729 0 0 0 0 0 0 0 16-3584
+chrM 11730 0 0 0 0 0 0 0 16-3584
+chrM 11731 0 0 0 0 0 0 0 16-3584
+chrM 11732 0 0 0 0 0 0 0 16-3584
+chrM 11733 0 0 0 0 0 0 0 16-3584
+chrM 11734 0 0 0 0 0 0 0 16-3584
+chrM 11735 0 0 0 0 0 0 0 16-3584
+chrM 11736 0 0 0 0 0 0 0 16-3584
+chrM 11737 0 0 0 0 0 0 0 16-3584
+chrM 11738 0 0 0 0 0 0 0 16-3584
+chrM 11739 0 0 0 0 0 0 0 16-3584
+chrM 11740 0 0 0 0 0 0 0 16-3584
+chrM 11741 0 0 0 0 0 0 0 16-3584
+chrM 11742 0 0 0 0 0 0 0 16-3584
+chrM 11743 0 0 0 0 0 0 0 16-3584
+chrM 11744 0 0 0 0 0 0 0 16-3584
+chrM 11745 0 0 0 0 0 0 0 16-3584
+chrM 11746 0 0 0 0 0 0 0 16-3584
+chrM 11747 0 0 0 0 0 0 0 16-3584
+chrM 11748 0 0 0 0 0 0 0 16-3584
+chrM 11749 0 0 0 0 0 0 0 16-3584
+chrM 11750 0 0 0 0 0 0 0 16-3584
+chrM 11751 0 0 0 0 0 0 0 16-3584
+chrM 11752 0 0 0 0 0 0 0 16-3584
+chrM 11753 0 0 0 0 0 0 0 16-3584
+chrM 11754 0 0 0 0 0 0 0 16-3584
+chrM 11755 0 0 0 0 0 0 0 16-3584
+chrM 11756 0 0 0 0 0 0 0 16-3584
+chrM 11757 0 0 0 0 0 0 0 16-3584
+chrM 11758 0 0 0 0 0 0 0 16-3584
+chrM 11759 0 0 0 0 0 0 0 16-3584
+chrM 11760 0 0 0 0 0 0 0 16-3584
+chrM 11761 0 0 0 0 0 0 0 16-3584
+chrM 11762 0 0 0 0 0 0 0 16-3584
+chrM 11763 0 0 0 0 0 0 0 16-3584
+chrM 11764 0 0 0 0 0 0 0 16-3584
+chrM 11765 0 0 0 0 0 0 0 16-3584
+chrM 11766 0 0 0 0 0 0 0 16-3584
+chrM 11767 0 0 0 0 0 0 0 16-3584
+chrM 11768 0 0 0 0 0 0 0 16-3584
+chrM 11769 0 0 0 0 0 0 0 16-3584
+chrM 11770 0 0 0 0 0 0 0 16-3584
+chrM 11771 0 0 0 0 0 0 0 16-3584
+chrM 11772 0 0 0 0 0 0 0 16-3584
+chrM 11773 0 0 0 0 0 0 0 16-3584
+chrM 11774 0 0 0 0 0 0 0 16-3584
+chrM 11775 0 0 0 0 0 0 0 16-3584
+chrM 11776 0 0 0 0 0 0 0 16-3584
+chrM 11777 0 0 0 0 0 0 0 16-3584
+chrM 11778 0 0 0 0 0 0 0 16-3584
+chrM 11779 0 0 0 0 0 0 0 16-3584
+chrM 11780 0 0 0 0 0 0 0 16-3584
+chrM 11781 0 0 0 0 0 0 0 16-3584
+chrM 11782 0 0 0 0 0 0 0 16-3584
+chrM 11783 0 0 0 0 0 0 0 16-3584
+chrM 11784 0 0 0 0 0 0 0 16-3584
+chrM 11785 0 0 0 0 0 0 0 16-3584
+chrM 11786 0 0 0 0 0 0 0 16-3584
+chrM 11787 0 0 0 0 0 0 0 16-3584
+chrM 11788 0 0 0 0 0 0 0 16-3584
+chrM 11789 0 0 0 0 0 0 0 16-3584
+chrM 11790 0 0 0 0 0 0 0 16-3584
+chrM 11791 0 0 0 0 0 0 0 16-3584
+chrM 11792 0 0 0 0 0 0 0 16-3584
+chrM 11793 0 0 0 0 0 0 0 16-3584
+chrM 11794 0 0 0 0 0 0 0 16-3584
+chrM 11795 0 0 0 0 0 0 0 16-3584
+chrM 11796 0 0 0 0 0 0 0 16-3584
+chrM 11797 0 0 0 0 0 0 0 16-3584
+chrM 11798 0 0 0 0 0 0 0 16-3584
+chrM 11799 0 0 0 0 0 0 0 16-3584
+chrM 11800 0 0 0 0 0 0 0 16-3584
+chrM 11801 0 0 0 0 0 0 0 16-3584
+chrM 11802 0 0 0 0 0 0 0 16-3584
+chrM 11803 0 0 0 0 0 0 0 16-3584
+chrM 11804 0 0 0 0 0 0 0 16-3584
+chrM 11805 0 0 0 0 0 0 0 16-3584
+chrM 11806 0 0 0 0 0 0 0 16-3584
+chrM 11807 0 0 0 0 0 0 0 16-3584
+chrM 11808 0 0 0 0 0 0 0 16-3584
+chrM 11809 0 0 0 0 0 0 0 16-3584
+chrM 11810 0 0 0 0 0 0 0 16-3584
+chrM 11811 0 0 0 0 0 0 0 16-3584
+chrM 11812 0 0 0 0 0 0 0 16-3584
+chrM 11813 0 0 0 0 0 0 0 16-3584
+chrM 11814 0 0 0 0 0 0 0 16-3584
+chrM 11815 0 0 0 0 0 0 0 16-3584
+chrM 11816 0 0 0 0 0 0 0 16-3584
+chrM 11817 0 0 0 0 0 0 0 16-3584
+chrM 11818 0 0 0 0 0 0 0 16-3584
+chrM 11819 0 0 0 0 0 0 0 16-3584
+chrM 11820 0 0 0 0 0 0 0 16-3584
+chrM 11821 0 0 0 0 0 0 0 16-3584
+chrM 11822 0 0 0 0 0 0 0 16-3584
+chrM 11823 0 0 0 0 0 0 0 16-3584
+chrM 11824 0 0 0 0 0 0 0 16-3584
+chrM 11825 0 0 0 0 0 0 0 16-3584
+chrM 11826 0 0 0 0 0 0 0 16-3584
+chrM 11827 0 0 0 0 0 0 0 16-3584
+chrM 11828 0 0 0 0 0 0 0 16-3584
+chrM 11829 0 0 0 0 0 0 0 16-3584
+chrM 11830 0 0 0 0 0 0 0 16-3584
+chrM 11831 0 0 0 0 0 0 0 16-3584
+chrM 11832 0 0 0 0 0 0 0 16-3584
+chrM 11833 0 0 0 0 0 0 0 16-3584
+chrM 11834 0 0 0 0 0 0 0 16-3584
+chrM 11835 0 0 0 0 0 0 0 16-3584
+chrM 11836 0 0 0 0 0 0 0 16-3584
+chrM 11837 0 0 0 0 0 0 0 16-3584
+chrM 11838 0 0 0 0 0 0 0 16-3584
+chrM 11839 0 0 0 0 0 0 0 16-3584
+chrM 11840 0 0 0 0 0 0 0 16-3584
+chrM 11841 0 0 0 0 0 0 0 16-3584
+chrM 11842 0 0 0 0 0 0 0 16-3584
+chrM 11843 0 0 0 0 0 0 0 16-3584
+chrM 11844 0 0 0 0 0 0 0 16-3584
+chrM 11845 0 0 0 0 0 0 0 16-3584
+chrM 11846 0 0 0 0 0 0 0 16-3584
+chrM 11847 0 0 0 0 0 0 0 16-3584
+chrM 11848 0 0 0 0 0 0 0 16-3584
+chrM 11849 0 0 0 0 0 0 0 16-3584
+chrM 11850 0 0 0 0 0 0 0 16-3584
+chrM 11851 0 0 0 0 0 0 0 16-3584
+chrM 11852 0 0 0 0 0 0 0 16-3584
+chrM 11853 0 0 0 0 0 0 0 16-3584
+chrM 11854 0 0 0 0 0 0 0 16-3584
+chrM 11855 0 0 0 0 0 0 0 16-3584
+chrM 11856 0 0 0 0 0 0 0 16-3584
+chrM 11857 0 0 0 0 0 0 0 16-3584
+chrM 11858 0 0 0 0 0 0 0 16-3584
+chrM 11859 0 0 0 0 0 0 0 16-3584
+chrM 11860 0 0 0 0 0 0 0 16-3584
+chrM 11861 0 0 0 0 0 0 0 16-3584
+chrM 11862 0 0 0 0 0 0 0 16-3584
+chrM 11863 0 0 0 0 0 0 0 16-3584
+chrM 11864 0 0 0 0 0 0 0 16-3584
+chrM 11865 0 0 0 0 0 0 0 16-3584
+chrM 11866 0 0 0 0 0 0 0 16-3584
+chrM 11867 0 0 0 0 0 0 0 16-3584
+chrM 11868 0 0 0 0 0 0 0 16-3584
+chrM 11869 0 0 0 0 0 0 0 16-3584
+chrM 11870 0 0 0 0 0 0 0 16-3584
+chrM 11871 0 0 0 0 0 0 0 16-3584
+chrM 11872 0 0 0 0 0 0 0 16-3584
+chrM 11873 0 0 0 0 0 0 0 16-3584
+chrM 11874 0 0 0 0 0 0 0 16-3584
+chrM 11875 0 0 0 0 0 0 0 16-3584
+chrM 11876 0 0 0 0 0 0 0 16-3584
+chrM 11877 0 0 0 0 0 0 0 16-3584
+chrM 11878 0 0 0 0 0 0 0 16-3584
+chrM 11879 0 0 0 0 0 0 0 16-3584
+chrM 11880 0 0 0 0 0 0 0 16-3584
+chrM 11881 0 0 0 0 0 0 0 16-3584
+chrM 11882 0 0 0 0 0 0 0 16-3584
+chrM 11883 0 0 0 0 0 0 0 16-3584
+chrM 11884 0 0 0 0 0 0 0 16-3584
+chrM 11885 0 0 0 0 0 0 0 16-3584
+chrM 11886 0 0 0 0 0 0 0 16-3584
+chrM 11887 0 0 0 0 0 0 0 16-3584
+chrM 11888 0 0 0 0 0 0 0 16-3584
+chrM 11889 0 0 0 0 0 0 0 16-3584
+chrM 11890 0 0 0 0 0 0 0 16-3584
+chrM 11891 0 0 0 0 0 0 0 16-3584
+chrM 11892 0 0 0 0 0 0 0 16-3584
+chrM 11893 0 0 0 0 0 0 0 16-3584
+chrM 11894 0 0 0 0 0 0 0 16-3584
+chrM 11895 0 0 0 0 0 0 0 16-3584
+chrM 11896 0 0 0 0 0 0 0 16-3584
+chrM 11897 0 0 0 0 0 0 0 16-3584
+chrM 11898 0 0 0 0 0 0 0 16-3584
+chrM 11899 0 0 0 0 0 0 0 16-3584
+chrM 11900 0 0 0 0 0 0 0 16-3584
+chrM 11901 0 0 0 0 0 0 0 16-3584
+chrM 11902 0 0 0 0 0 0 0 16-3584
+chrM 11903 0 0 0 0 0 0 0 16-3584
+chrM 11904 0 0 0 0 0 0 0 16-3584
+chrM 11905 0 0 0 0 0 0 0 16-3584
+chrM 11906 0 0 0 0 0 0 0 16-3584
+chrM 11907 0 0 0 0 0 0 0 16-3584
+chrM 11908 0 0 0 0 0 0 0 16-3584
+chrM 11909 0 0 0 0 0 0 0 16-3584
+chrM 11910 0 0 0 0 0 0 0 16-3584
+chrM 11911 0 0 0 0 0 0 0 16-3584
+chrM 11912 0 0 0 0 0 0 0 16-3584
+chrM 11913 0 0 0 0 0 0 0 16-3584
+chrM 11914 0 0 0 0 0 0 0 16-3584
+chrM 11915 0 0 0 0 0 0 0 16-3584
+chrM 11916 0 0 0 0 0 0 0 16-3584
+chrM 11917 0 0 0 0 0 0 0 16-3584
+chrM 11918 0 0 0 0 0 0 0 16-3584
+chrM 11919 0 0 0 0 0 0 0 16-3584
+chrM 11920 0 0 0 0 0 0 0 16-3584
+chrM 11921 0 0 0 0 0 0 0 16-3584
+chrM 11922 0 0 0 0 0 0 0 16-3584
+chrM 11923 0 0 0 0 0 0 0 16-3584
+chrM 11924 0 0 0 0 0 0 0 16-3584
+chrM 11925 0 0 0 0 0 0 0 16-3584
+chrM 11926 0 0 0 0 0 0 0 16-3584
+chrM 11927 0 0 0 0 0 0 0 16-3584
+chrM 11928 0 0 0 0 0 0 0 16-3584
+chrM 11929 0 0 0 0 0 0 0 16-3584
+chrM 11930 0 0 0 0 0 0 0 16-3584
+chrM 11931 0 0 0 0 0 0 0 16-3584
+chrM 11932 0 0 0 0 0 0 0 16-3584
+chrM 11933 0 0 0 0 0 0 0 16-3584
+chrM 11934 0 0 0 0 0 0 0 16-3584
+chrM 11935 0 0 0 0 0 0 0 16-3584
+chrM 11936 0 0 0 0 0 0 0 16-3584
+chrM 11937 0 0 0 0 0 0 0 16-3584
+chrM 11938 0 0 0 0 0 0 0 16-3584
+chrM 11939 0 0 0 0 0 0 0 16-3584
+chrM 11940 0 0 0 0 0 0 0 16-3584
+chrM 11941 0 0 0 0 0 0 0 16-3584
+chrM 11942 0 0 0 0 0 0 0 16-3584
+chrM 11943 0 0 0 0 0 0 0 16-3584
+chrM 11944 0 0 0 0 0 0 0 16-3584
+chrM 11945 0 0 0 0 0 0 0 16-3584
+chrM 11946 0 0 0 0 0 0 0 16-3584
+chrM 11947 0 0 0 0 0 0 0 16-3584
+chrM 11948 0 0 0 0 0 0 0 16-3584
+chrM 11949 0 0 0 0 0 0 0 16-3584
+chrM 11950 0 0 0 0 0 0 0 16-3584
+chrM 11951 0 0 0 0 0 0 0 16-3584
+chrM 11952 0 0 0 0 0 0 0 16-3584
+chrM 11953 0 0 0 0 0 0 0 16-3584
+chrM 11954 0 0 0 0 0 0 0 16-3584
+chrM 11955 0 0 0 0 0 0 0 16-3584
+chrM 11956 0 0 0 0 0 0 0 16-3584
+chrM 11957 0 0 0 0 0 0 0 16-3584
+chrM 11958 0 0 0 0 0 0 0 16-3584
+chrM 11959 0 0 0 0 0 0 0 16-3584
+chrM 11960 0 0 0 0 0 0 0 16-3584
+chrM 11961 0 0 0 0 0 0 0 16-3584
+chrM 11962 0 0 0 0 0 0 0 16-3584
+chrM 11963 0 0 0 0 0 0 0 16-3584
+chrM 11964 0 0 0 0 0 0 0 16-3584
+chrM 11965 0 0 0 0 0 0 0 16-3584
+chrM 11966 0 0 0 0 0 0 0 16-3584
+chrM 11967 0 0 0 0 0 0 0 16-3584
+chrM 11968 0 0 0 0 0 0 0 16-3584
+chrM 11969 0 0 0 0 0 0 0 16-3584
+chrM 11970 0 0 0 0 0 0 0 16-3584
+chrM 11971 0 0 0 0 0 0 0 16-3584
+chrM 11972 0 0 0 0 0 0 0 16-3584
+chrM 11973 0 0 0 0 0 0 0 16-3584
+chrM 11974 0 0 0 0 0 0 0 16-3584
+chrM 11975 0 0 0 0 0 0 0 16-3584
+chrM 11976 0 0 0 0 0 0 0 16-3584
+chrM 11977 0 0 0 0 0 0 0 16-3584
+chrM 11978 0 0 0 0 0 0 0 16-3584
+chrM 11979 0 0 0 0 0 0 0 16-3584
+chrM 11980 0 0 0 0 0 0 0 16-3584
+chrM 11981 0 0 0 0 0 0 0 16-3584
+chrM 11982 0 0 0 0 0 0 0 16-3584
+chrM 11983 0 0 0 0 0 0 0 16-3584
+chrM 11984 0 0 0 0 0 0 0 16-3584
+chrM 11985 0 0 0 0 0 0 0 16-3584
+chrM 11986 0 0 0 0 0 0 0 16-3584
+chrM 11987 0 0 0 0 0 0 0 16-3584
+chrM 11988 0 0 0 0 0 0 0 16-3584
+chrM 11989 0 0 0 0 0 0 0 16-3584
+chrM 11990 0 0 0 0 0 0 0 16-3584
+chrM 11991 1 0 1 0 0 0 0 16-3584
+chrM 11992 1 1 0 0 0 0 0 16-3584
+chrM 11993 1 1 0 0 0 0 0 16-3584
+chrM 11994 1 0 1 0 0 0 0 16-3584
+chrM 11995 1 1 0 0 0 0 0 16-3584
+chrM 11996 2 0 1 0 1 0 0 16-3584
+chrM 11997 2 1 1 0 0 0 0 16-3584
+chrM 11998 2 1 0 0 1 0 0 16-3584
+chrM 11999 2 0 0 0 2 0 0 16-3584
+chrM 12000 2 0 0 1 1 0 0 16-3584
+chrM 12001 2 1 1 0 0 0 0 16-3584
+chrM 12002 2 0 1 1 0 0 0 16-3584
+chrM 12003 2 1 0 1 0 0 0 16-3584
+chrM 12004 2 1 0 1 0 0 0 16-3584
+chrM 12005 2 0 1 1 0 0 0 16-3584
+chrM 12006 2 0 1 1 0 0 0 16-3584
+chrM 12007 2 1 0 0 1 0 0 16-3584
+chrM 12008 2 0 2 0 0 0 0 16-3584
+chrM 12009 2 1 1 0 0 0 0 16-3584
+chrM 12010 2 0 2 0 0 0 0 16-3584
+chrM 12011 2 0 0 1 1 0 0 16-3584
+chrM 12012 2 0 1 0 1 0 0 16-3584
+chrM 12013 2 0 0 2 0 0 0 16-3584
+chrM 12014 2 1 0 1 0 0 0 16-3584
+chrM 12015 2 0 1 1 0 0 0 16-3584
+chrM 12016 2 1 0 0 1 0 0 16-3584
+chrM 12017 2 0 1 0 1 0 0 16-3584
+chrM 12018 2 1 1 0 0 0 0 16-3584
+chrM 12019 2 0 1 0 1 0 0 16-3584
+chrM 12020 2 1 0 0 1 0 0 16-3584
+chrM 12021 2 0 0 0 2 0 0 16-3584
+chrM 12022 2 1 1 0 0 0 0 16-3584
+chrM 12023 2 0 1 1 0 0 0 16-3584
+chrM 12024 2 1 1 0 0 0 0 16-3584
+chrM 12025 2 2 0 0 0 0 0 16-3584
+chrM 12026 2 1 0 0 1 0 0 16-3584
+chrM 12027 2 1 0 1 0 0 0 16-3584
+chrM 12028 2 0 0 1 1 0 0 16-3584
+chrM 12029 2 0 0 0 2 0 0 16-3584
+chrM 12030 2 0 1 1 0 0 0 16-3584
+chrM 12031 2 0 1 1 0 0 0 16-3584
+chrM 12032 2 0 1 1 0 0 0 16-3584
+chrM 12033 2 1 0 0 1 0 0 16-3584
+chrM 12034 2 1 1 0 0 0 0 16-3584
+chrM 12035 2 2 0 0 0 0 0 16-3584
+chrM 12036 2 0 0 2 0 0 0 16-3584
+chrM 12037 2 0 0 1 1 0 0 16-3584
+chrM 12038 2 0 1 0 1 0 0 16-3584
+chrM 12039 2 1 0 0 1 0 0 16-3584
+chrM 12040 2 0 0 1 1 0 0 16-3584
+chrM 12041 2 0 0 0 2 0 0 16-3584
+chrM 12042 2 1 1 0 0 0 0 16-3584
+chrM 12043 2 1 0 0 1 0 0 16-3584
+chrM 12044 2 1 1 0 0 0 0 16-3584
+chrM 12045 2 0 0 1 1 0 0 16-3584
+chrM 12046 2 0 2 0 0 0 0 16-3584
+chrM 12047 2 0 0 2 0 0 0 16-3584
+chrM 12048 1 0 0 1 0 0 0 16-3584
+chrM 12049 1 1 0 0 0 0 0 16-3584
+chrM 12050 1 0 0 1 0 0 0 16-3584
+chrM 12051 1 1 0 0 0 0 0 16-3584
+chrM 12052 1 0 0 0 1 0 0 16-3584
+chrM 12053 0 0 0 0 0 0 0 16-3584
+chrM 12054 0 0 0 0 0 0 0 16-3584
+chrM 12055 0 0 0 0 0 0 0 16-3584
+chrM 12056 0 0 0 0 0 0 0 16-3584
+chrM 12057 0 0 0 0 0 0 0 16-3584
+chrM 12058 0 0 0 0 0 0 0 16-3584
+chrM 12059 0 0 0 0 0 0 0 16-3584
+chrM 12060 0 0 0 0 0 0 0 16-3584
+chrM 12061 0 0 0 0 0 0 0 16-3584
+chrM 12062 0 0 0 0 0 0 0 16-3584
+chrM 12063 0 0 0 0 0 0 0 16-3584
+chrM 12064 0 0 0 0 0 0 0 16-3584
+chrM 12065 0 0 0 0 0 0 0 16-3584
+chrM 12066 0 0 0 0 0 0 0 16-3584
+chrM 12067 0 0 0 0 0 0 0 16-3584
+chrM 12068 0 0 0 0 0 0 0 16-3584
+chrM 12069 0 0 0 0 0 0 0 16-3584
+chrM 12070 0 0 0 0 0 0 0 16-3584
+chrM 12071 0 0 0 0 0 0 0 16-3584
+chrM 12072 0 0 0 0 0 0 0 16-3584
+chrM 12073 0 0 0 0 0 0 0 16-3584
+chrM 12074 0 0 0 0 0 0 0 16-3584
+chrM 12075 0 0 0 0 0 0 0 16-3584
+chrM 12076 0 0 0 0 0 0 0 16-3584
+chrM 12077 0 0 0 0 0 0 0 16-3584
+chrM 12078 0 0 0 0 0 0 0 16-3584
+chrM 12079 0 0 0 0 0 0 0 16-3584
+chrM 12080 0 0 0 0 0 0 0 16-3584
+chrM 12081 0 0 0 0 0 0 0 16-3584
+chrM 12082 0 0 0 0 0 0 0 16-3584
+chrM 12083 0 0 0 0 0 0 0 16-3584
+chrM 12084 0 0 0 0 0 0 0 16-3584
+chrM 12085 0 0 0 0 0 0 0 16-3584
+chrM 12086 0 0 0 0 0 0 0 16-3584
+chrM 12087 0 0 0 0 0 0 0 16-3584
+chrM 12088 0 0 0 0 0 0 0 16-3584
+chrM 12089 0 0 0 0 0 0 0 16-3584
+chrM 12090 0 0 0 0 0 0 0 16-3584
+chrM 12091 0 0 0 0 0 0 0 16-3584
+chrM 12092 0 0 0 0 0 0 0 16-3584
+chrM 12093 0 0 0 0 0 0 0 16-3584
+chrM 12094 0 0 0 0 0 0 0 16-3584
+chrM 12095 0 0 0 0 0 0 0 16-3584
+chrM 12096 0 0 0 0 0 0 0 16-3584
+chrM 12097 0 0 0 0 0 0 0 16-3584
+chrM 12098 0 0 0 0 0 0 0 16-3584
+chrM 12099 0 0 0 0 0 0 0 16-3584
+chrM 12100 0 0 0 0 0 0 0 16-3584
+chrM 12101 0 0 0 0 0 0 0 16-3584
+chrM 12102 0 0 0 0 0 0 0 16-3584
+chrM 12103 0 0 0 0 0 0 0 16-3584
+chrM 12104 0 0 0 0 0 0 0 16-3584
+chrM 12105 0 0 0 0 0 0 0 16-3584
+chrM 12106 0 0 0 0 0 0 0 16-3584
+chrM 12107 0 0 0 0 0 0 0 16-3584
+chrM 12108 0 0 0 0 0 0 0 16-3584
+chrM 12109 0 0 0 0 0 0 0 16-3584
+chrM 12110 0 0 0 0 0 0 0 16-3584
+chrM 12111 0 0 0 0 0 0 0 16-3584
+chrM 12112 0 0 0 0 0 0 0 16-3584
+chrM 12113 0 0 0 0 0 0 0 16-3584
+chrM 12114 0 0 0 0 0 0 0 16-3584
+chrM 12115 0 0 0 0 0 0 0 16-3584
+chrM 12116 0 0 0 0 0 0 0 16-3584
+chrM 12117 0 0 0 0 0 0 0 16-3584
+chrM 12118 0 0 0 0 0 0 0 16-3584
+chrM 12119 0 0 0 0 0 0 0 16-3584
+chrM 12120 0 0 0 0 0 0 0 16-3584
+chrM 12121 0 0 0 0 0 0 0 16-3584
+chrM 12122 0 0 0 0 0 0 0 16-3584
+chrM 12123 0 0 0 0 0 0 0 16-3584
+chrM 12124 0 0 0 0 0 0 0 16-3584
+chrM 12125 0 0 0 0 0 0 0 16-3584
+chrM 12126 0 0 0 0 0 0 0 16-3584
+chrM 12127 0 0 0 0 0 0 0 16-3584
+chrM 12128 0 0 0 0 0 0 0 16-3584
+chrM 12129 0 0 0 0 0 0 0 16-3584
+chrM 12130 0 0 0 0 0 0 0 16-3584
+chrM 12131 0 0 0 0 0 0 0 16-3584
+chrM 12132 0 0 0 0 0 0 0 16-3584
+chrM 12133 0 0 0 0 0 0 0 16-3584
+chrM 12134 0 0 0 0 0 0 0 16-3584
+chrM 12135 0 0 0 0 0 0 0 16-3584
+chrM 12136 0 0 0 0 0 0 0 16-3584
+chrM 12137 0 0 0 0 0 0 0 16-3584
+chrM 12138 0 0 0 0 0 0 0 16-3584
+chrM 12139 0 0 0 0 0 0 0 16-3584
+chrM 12140 0 0 0 0 0 0 0 16-3584
+chrM 12141 0 0 0 0 0 0 0 16-3584
+chrM 12142 0 0 0 0 0 0 0 16-3584
+chrM 12143 0 0 0 0 0 0 0 16-3584
+chrM 12144 0 0 0 0 0 0 0 16-3584
+chrM 12145 0 0 0 0 0 0 0 16-3584
+chrM 12146 0 0 0 0 0 0 0 16-3584
+chrM 12147 0 0 0 0 0 0 0 16-3584
+chrM 12148 0 0 0 0 0 0 0 16-3584
+chrM 12149 0 0 0 0 0 0 0 16-3584
+chrM 12150 0 0 0 0 0 0 0 16-3584
+chrM 12151 0 0 0 0 0 0 0 16-3584
+chrM 12152 0 0 0 0 0 0 0 16-3584
+chrM 12153 0 0 0 0 0 0 0 16-3584
+chrM 12154 0 0 0 0 0 0 0 16-3584
+chrM 12155 0 0 0 0 0 0 0 16-3584
+chrM 12156 0 0 0 0 0 0 0 16-3584
+chrM 12157 0 0 0 0 0 0 0 16-3584
+chrM 12158 0 0 0 0 0 0 0 16-3584
+chrM 12159 0 0 0 0 0 0 0 16-3584
+chrM 12160 0 0 0 0 0 0 0 16-3584
+chrM 12161 0 0 0 0 0 0 0 16-3584
+chrM 12162 0 0 0 0 0 0 0 16-3584
+chrM 12163 0 0 0 0 0 0 0 16-3584
+chrM 12164 0 0 0 0 0 0 0 16-3584
+chrM 12165 0 0 0 0 0 0 0 16-3584
+chrM 12166 0 0 0 0 0 0 0 16-3584
+chrM 12167 0 0 0 0 0 0 0 16-3584
+chrM 12168 0 0 0 0 0 0 0 16-3584
+chrM 12169 0 0 0 0 0 0 0 16-3584
+chrM 12170 0 0 0 0 0 0 0 16-3584
+chrM 12171 0 0 0 0 0 0 0 16-3584
+chrM 12172 0 0 0 0 0 0 0 16-3584
+chrM 12173 0 0 0 0 0 0 0 16-3584
+chrM 12174 0 0 0 0 0 0 0 16-3584
+chrM 12175 0 0 0 0 0 0 0 16-3584
+chrM 12176 0 0 0 0 0 0 0 16-3584
+chrM 12177 0 0 0 0 0 0 0 16-3584
+chrM 12178 0 0 0 0 0 0 0 16-3584
+chrM 12179 0 0 0 0 0 0 0 16-3584
+chrM 12180 0 0 0 0 0 0 0 16-3584
+chrM 12181 0 0 0 0 0 0 0 16-3584
+chrM 12182 0 0 0 0 0 0 0 16-3584
+chrM 12183 0 0 0 0 0 0 0 16-3584
+chrM 12184 0 0 0 0 0 0 0 16-3584
+chrM 12185 0 0 0 0 0 0 0 16-3584
+chrM 12186 0 0 0 0 0 0 0 16-3584
+chrM 12187 0 0 0 0 0 0 0 16-3584
+chrM 12188 0 0 0 0 0 0 0 16-3584
+chrM 12189 0 0 0 0 0 0 0 16-3584
+chrM 12190 0 0 0 0 0 0 0 16-3584
+chrM 12191 0 0 0 0 0 0 0 16-3584
+chrM 12192 0 0 0 0 0 0 0 16-3584
+chrM 12193 0 0 0 0 0 0 0 16-3584
+chrM 12194 0 0 0 0 0 0 0 16-3584
+chrM 12195 0 0 0 0 0 0 0 16-3584
+chrM 12196 0 0 0 0 0 0 0 16-3584
+chrM 12197 0 0 0 0 0 0 0 16-3584
+chrM 12198 0 0 0 0 0 0 0 16-3584
+chrM 12199 0 0 0 0 0 0 0 16-3584
+chrM 12200 0 0 0 0 0 0 0 16-3584
+chrM 12201 0 0 0 0 0 0 0 16-3584
+chrM 12202 0 0 0 0 0 0 0 16-3584
+chrM 12203 0 0 0 0 0 0 0 16-3584
+chrM 12204 0 0 0 0 0 0 0 16-3584
+chrM 12205 0 0 0 0 0 0 0 16-3584
+chrM 12206 0 0 0 0 0 0 0 16-3584
+chrM 12207 0 0 0 0 0 0 0 16-3584
+chrM 12208 0 0 0 0 0 0 0 16-3584
+chrM 12209 0 0 0 0 0 0 0 16-3584
+chrM 12210 0 0 0 0 0 0 0 16-3584
+chrM 12211 0 0 0 0 0 0 0 16-3584
+chrM 12212 0 0 0 0 0 0 0 16-3584
+chrM 12213 0 0 0 0 0 0 0 16-3584
+chrM 12214 0 0 0 0 0 0 0 16-3584
+chrM 12215 0 0 0 0 0 0 0 16-3584
+chrM 12216 0 0 0 0 0 0 0 16-3584
+chrM 12217 0 0 0 0 0 0 0 16-3584
+chrM 12218 0 0 0 0 0 0 0 16-3584
+chrM 12219 0 0 0 0 0 0 0 16-3584
+chrM 12220 0 0 0 0 0 0 0 16-3584
+chrM 12221 0 0 0 0 0 0 0 16-3584
+chrM 12222 0 0 0 0 0 0 0 16-3584
+chrM 12223 0 0 0 0 0 0 0 16-3584
+chrM 12224 0 0 0 0 0 0 0 16-3584
+chrM 12225 0 0 0 0 0 0 0 16-3584
+chrM 12226 0 0 0 0 0 0 0 16-3584
+chrM 12227 0 0 0 0 0 0 0 16-3584
+chrM 12228 0 0 0 0 0 0 0 16-3584
+chrM 12229 0 0 0 0 0 0 0 16-3584
+chrM 12230 0 0 0 0 0 0 0 16-3584
+chrM 12231 0 0 0 0 0 0 0 16-3584
+chrM 12232 0 0 0 0 0 0 0 16-3584
+chrM 12233 0 0 0 0 0 0 0 16-3584
+chrM 12234 0 0 0 0 0 0 0 16-3584
+chrM 12235 0 0 0 0 0 0 0 16-3584
+chrM 12236 0 0 0 0 0 0 0 16-3584
+chrM 12237 0 0 0 0 0 0 0 16-3584
+chrM 12238 0 0 0 0 0 0 0 16-3584
+chrM 12239 0 0 0 0 0 0 0 16-3584
+chrM 12240 0 0 0 0 0 0 0 16-3584
+chrM 12241 0 0 0 0 0 0 0 16-3584
+chrM 12242 0 0 0 0 0 0 0 16-3584
+chrM 12243 0 0 0 0 0 0 0 16-3584
+chrM 12244 0 0 0 0 0 0 0 16-3584
+chrM 12245 0 0 0 0 0 0 0 16-3584
+chrM 12246 0 0 0 0 0 0 0 16-3584
+chrM 12247 0 0 0 0 0 0 0 16-3584
+chrM 12248 0 0 0 0 0 0 0 16-3584
+chrM 12249 0 0 0 0 0 0 0 16-3584
+chrM 12250 0 0 0 0 0 0 0 16-3584
+chrM 12251 0 0 0 0 0 0 0 16-3584
+chrM 12252 0 0 0 0 0 0 0 16-3584
+chrM 12253 0 0 0 0 0 0 0 16-3584
+chrM 12254 0 0 0 0 0 0 0 16-3584
+chrM 12255 0 0 0 0 0 0 0 16-3584
+chrM 12256 0 0 0 0 0 0 0 16-3584
+chrM 12257 0 0 0 0 0 0 0 16-3584
+chrM 12258 0 0 0 0 0 0 0 16-3584
+chrM 12259 0 0 0 0 0 0 0 16-3584
+chrM 12260 0 0 0 0 0 0 0 16-3584
+chrM 12261 0 0 0 0 0 0 0 16-3584
+chrM 12262 0 0 0 0 0 0 0 16-3584
+chrM 12263 0 0 0 0 0 0 0 16-3584
+chrM 12264 0 0 0 0 0 0 0 16-3584
+chrM 12265 0 0 0 0 0 0 0 16-3584
+chrM 12266 0 0 0 0 0 0 0 16-3584
+chrM 12267 0 0 0 0 0 0 0 16-3584
+chrM 12268 0 0 0 0 0 0 0 16-3584
+chrM 12269 0 0 0 0 0 0 0 16-3584
+chrM 12270 0 0 0 0 0 0 0 16-3584
+chrM 12271 0 0 0 0 0 0 0 16-3584
+chrM 12272 0 0 0 0 0 0 0 16-3584
+chrM 12273 0 0 0 0 0 0 0 16-3584
+chrM 12274 0 0 0 0 0 0 0 16-3584
+chrM 12275 0 0 0 0 0 0 0 16-3584
+chrM 12276 0 0 0 0 0 0 0 16-3584
+chrM 12277 0 0 0 0 0 0 0 16-3584
+chrM 12278 0 0 0 0 0 0 0 16-3584
+chrM 12279 0 0 0 0 0 0 0 16-3584
+chrM 12280 0 0 0 0 0 0 0 16-3584
+chrM 12281 0 0 0 0 0 0 0 16-3584
+chrM 12282 0 0 0 0 0 0 0 16-3584
+chrM 12283 0 0 0 0 0 0 0 16-3584
+chrM 12284 0 0 0 0 0 0 0 16-3584
+chrM 12285 0 0 0 0 0 0 0 16-3584
+chrM 12286 0 0 0 0 0 0 0 16-3584
+chrM 12287 0 0 0 0 0 0 0 16-3584
+chrM 12288 0 0 0 0 0 0 0 16-3584
+chrM 12289 0 0 0 0 0 0 0 16-3584
+chrM 12290 0 0 0 0 0 0 0 16-3584
+chrM 12291 0 0 0 0 0 0 0 16-3584
+chrM 12292 0 0 0 0 0 0 0 16-3584
+chrM 12293 0 0 0 0 0 0 0 16-3584
+chrM 12294 0 0 0 0 0 0 0 16-3584
+chrM 12295 0 0 0 0 0 0 0 16-3584
+chrM 12296 0 0 0 0 0 0 0 16-3584
+chrM 12297 0 0 0 0 0 0 0 16-3584
+chrM 12298 0 0 0 0 0 0 0 16-3584
+chrM 12299 0 0 0 0 0 0 0 16-3584
+chrM 12300 0 0 0 0 0 0 0 16-3584
+chrM 12301 0 0 0 0 0 0 0 16-3584
+chrM 12302 0 0 0 0 0 0 0 16-3584
+chrM 12303 0 0 0 0 0 0 0 16-3584
+chrM 12304 0 0 0 0 0 0 0 16-3584
+chrM 12305 0 0 0 0 0 0 0 16-3584
+chrM 12306 0 0 0 0 0 0 0 16-3584
+chrM 12307 0 0 0 0 0 0 0 16-3584
+chrM 12308 0 0 0 0 0 0 0 16-3584
+chrM 12309 0 0 0 0 0 0 0 16-3584
+chrM 12310 0 0 0 0 0 0 0 16-3584
+chrM 12311 0 0 0 0 0 0 0 16-3584
+chrM 12312 0 0 0 0 0 0 0 16-3584
+chrM 12313 0 0 0 0 0 0 0 16-3584
+chrM 12314 0 0 0 0 0 0 0 16-3584
+chrM 12315 0 0 0 0 0 0 0 16-3584
+chrM 12316 0 0 0 0 0 0 0 16-3584
+chrM 12317 0 0 0 0 0 0 0 16-3584
+chrM 12318 0 0 0 0 0 0 0 16-3584
+chrM 12319 0 0 0 0 0 0 0 16-3584
+chrM 12320 0 0 0 0 0 0 0 16-3584
+chrM 12321 0 0 0 0 0 0 0 16-3584
+chrM 12322 0 0 0 0 0 0 0 16-3584
+chrM 12323 0 0 0 0 0 0 0 16-3584
+chrM 12324 0 0 0 0 0 0 0 16-3584
+chrM 12325 0 0 0 0 0 0 0 16-3584
+chrM 12326 0 0 0 0 0 0 0 16-3584
+chrM 12327 0 0 0 0 0 0 0 16-3584
+chrM 12328 0 0 0 0 0 0 0 16-3584
+chrM 12329 0 0 0 0 0 0 0 16-3584
+chrM 12330 0 0 0 0 0 0 0 16-3584
+chrM 12331 0 0 0 0 0 0 0 16-3584
+chrM 12332 0 0 0 0 0 0 0 16-3584
+chrM 12333 0 0 0 0 0 0 0 16-3584
+chrM 12334 0 0 0 0 0 0 0 16-3584
+chrM 12335 0 0 0 0 0 0 0 16-3584
+chrM 12336 0 0 0 0 0 0 0 16-3584
+chrM 12337 0 0 0 0 0 0 0 16-3584
+chrM 12338 0 0 0 0 0 0 0 16-3584
+chrM 12339 0 0 0 0 0 0 0 16-3584
+chrM 12340 0 0 0 0 0 0 0 16-3584
+chrM 12341 0 0 0 0 0 0 0 16-3584
+chrM 12342 0 0 0 0 0 0 0 16-3584
+chrM 12343 0 0 0 0 0 0 0 16-3584
+chrM 12344 0 0 0 0 0 0 0 16-3584
+chrM 12345 0 0 0 0 0 0 0 16-3584
+chrM 12346 0 0 0 0 0 0 0 16-3584
+chrM 12347 0 0 0 0 0 0 0 16-3584
+chrM 12348 0 0 0 0 0 0 0 16-3584
+chrM 12349 0 0 0 0 0 0 0 16-3584
+chrM 12350 0 0 0 0 0 0 0 16-3584
+chrM 12351 0 0 0 0 0 0 0 16-3584
+chrM 12352 0 0 0 0 0 0 0 16-3584
+chrM 12353 0 0 0 0 0 0 0 16-3584
+chrM 12354 0 0 0 0 0 0 0 16-3584
+chrM 12355 0 0 0 0 0 0 0 16-3584
+chrM 12356 0 0 0 0 0 0 0 16-3584
+chrM 12357 0 0 0 0 0 0 0 16-3584
+chrM 12358 0 0 0 0 0 0 0 16-3584
+chrM 12359 0 0 0 0 0 0 0 16-3584
+chrM 12360 0 0 0 0 0 0 0 16-3584
+chrM 12361 0 0 0 0 0 0 0 16-3584
+chrM 12362 0 0 0 0 0 0 0 16-3584
+chrM 12363 0 0 0 0 0 0 0 16-3584
+chrM 12364 0 0 0 0 0 0 0 16-3584
+chrM 12365 0 0 0 0 0 0 0 16-3584
+chrM 12366 0 0 0 0 0 0 0 16-3584
+chrM 12367 0 0 0 0 0 0 0 16-3584
+chrM 12368 0 0 0 0 0 0 0 16-3584
+chrM 12369 0 0 0 0 0 0 0 16-3584
+chrM 12370 0 0 0 0 0 0 0 16-3584
+chrM 12371 0 0 0 0 0 0 0 16-3584
+chrM 12372 0 0 0 0 0 0 0 16-3584
+chrM 12373 0 0 0 0 0 0 0 16-3584
+chrM 12374 0 0 0 0 0 0 0 16-3584
+chrM 12375 0 0 0 0 0 0 0 16-3584
+chrM 12376 0 0 0 0 0 0 0 16-3584
+chrM 12377 0 0 0 0 0 0 0 16-3584
+chrM 12378 0 0 0 0 0 0 0 16-3584
+chrM 12379 0 0 0 0 0 0 0 16-3584
+chrM 12380 0 0 0 0 0 0 0 16-3584
+chrM 12381 0 0 0 0 0 0 0 16-3584
+chrM 12382 0 0 0 0 0 0 0 16-3584
+chrM 12383 0 0 0 0 0 0 0 16-3584
+chrM 12384 0 0 0 0 0 0 0 16-3584
+chrM 12385 0 0 0 0 0 0 0 16-3584
+chrM 12386 0 0 0 0 0 0 0 16-3584
+chrM 12387 0 0 0 0 0 0 0 16-3584
+chrM 12388 0 0 0 0 0 0 0 16-3584
+chrM 12389 0 0 0 0 0 0 0 16-3584
+chrM 12390 0 0 0 0 0 0 0 16-3584
+chrM 12391 0 0 0 0 0 0 0 16-3584
+chrM 12392 0 0 0 0 0 0 0 16-3584
+chrM 12393 0 0 0 0 0 0 0 16-3584
+chrM 12394 0 0 0 0 0 0 0 16-3584
+chrM 12395 0 0 0 0 0 0 0 16-3584
+chrM 12396 0 0 0 0 0 0 0 16-3584
+chrM 12397 0 0 0 0 0 0 0 16-3584
+chrM 12398 0 0 0 0 0 0 0 16-3584
+chrM 12399 0 0 0 0 0 0 0 16-3584
+chrM 12400 0 0 0 0 0 0 0 16-3584
+chrM 12401 0 0 0 0 0 0 0 16-3584
+chrM 12402 0 0 0 0 0 0 0 16-3584
+chrM 12403 0 0 0 0 0 0 0 16-3584
+chrM 12404 0 0 0 0 0 0 0 16-3584
+chrM 12405 0 0 0 0 0 0 0 16-3584
+chrM 12406 0 0 0 0 0 0 0 16-3584
+chrM 12407 0 0 0 0 0 0 0 16-3584
+chrM 12408 0 0 0 0 0 0 0 16-3584
+chrM 12409 0 0 0 0 0 0 0 16-3584
+chrM 12410 0 0 0 0 0 0 0 16-3584
+chrM 12411 0 0 0 0 0 0 0 16-3584
+chrM 12412 0 0 0 0 0 0 0 16-3584
+chrM 12413 0 0 0 0 0 0 0 16-3584
+chrM 12414 0 0 0 0 0 0 0 16-3584
+chrM 12415 0 0 0 0 0 0 0 16-3584
+chrM 12416 0 0 0 0 0 0 0 16-3584
+chrM 12417 0 0 0 0 0 0 0 16-3584
+chrM 12418 0 0 0 0 0 0 0 16-3584
+chrM 12419 0 0 0 0 0 0 0 16-3584
+chrM 12420 0 0 0 0 0 0 0 16-3584
+chrM 12421 0 0 0 0 0 0 0 16-3584
+chrM 12422 0 0 0 0 0 0 0 16-3584
+chrM 12423 0 0 0 0 0 0 0 16-3584
+chrM 12424 0 0 0 0 0 0 0 16-3584
+chrM 12425 0 0 0 0 0 0 0 16-3584
+chrM 12426 0 0 0 0 0 0 0 16-3584
+chrM 12427 0 0 0 0 0 0 0 16-3584
+chrM 12428 0 0 0 0 0 0 0 16-3584
+chrM 12429 0 0 0 0 0 0 0 16-3584
+chrM 12430 0 0 0 0 0 0 0 16-3584
+chrM 12431 0 0 0 0 0 0 0 16-3584
+chrM 12432 0 0 0 0 0 0 0 16-3584
+chrM 12433 0 0 0 0 0 0 0 16-3584
+chrM 12434 0 0 0 0 0 0 0 16-3584
+chrM 12435 0 0 0 0 0 0 0 16-3584
+chrM 12436 0 0 0 0 0 0 0 16-3584
+chrM 12437 0 0 0 0 0 0 0 16-3584
+chrM 12438 0 0 0 0 0 0 0 16-3584
+chrM 12439 0 0 0 0 0 0 0 16-3584
+chrM 12440 0 0 0 0 0 0 0 16-3584
+chrM 12441 0 0 0 0 0 0 0 16-3584
+chrM 12442 0 0 0 0 0 0 0 16-3584
+chrM 12443 0 0 0 0 0 0 0 16-3584
+chrM 12444 0 0 0 0 0 0 0 16-3584
+chrM 12445 0 0 0 0 0 0 0 16-3584
+chrM 12446 0 0 0 0 0 0 0 16-3584
+chrM 12447 0 0 0 0 0 0 0 16-3584
+chrM 12448 0 0 0 0 0 0 0 16-3584
+chrM 12449 0 0 0 0 0 0 0 16-3584
+chrM 12450 0 0 0 0 0 0 0 16-3584
+chrM 12451 0 0 0 0 0 0 0 16-3584
+chrM 12452 0 0 0 0 0 0 0 16-3584
+chrM 12453 0 0 0 0 0 0 0 16-3584
+chrM 12454 0 0 0 0 0 0 0 16-3584
+chrM 12455 0 0 0 0 0 0 0 16-3584
+chrM 12456 0 0 0 0 0 0 0 16-3584
+chrM 12457 0 0 0 0 0 0 0 16-3584
+chrM 12458 0 0 0 0 0 0 0 16-3584
+chrM 12459 0 0 0 0 0 0 0 16-3584
+chrM 12460 0 0 0 0 0 0 0 16-3584
+chrM 12461 0 0 0 0 0 0 0 16-3584
+chrM 12462 0 0 0 0 0 0 0 16-3584
+chrM 12463 0 0 0 0 0 0 0 16-3584
+chrM 12464 0 0 0 0 0 0 0 16-3584
+chrM 12465 0 0 0 0 0 0 0 16-3584
+chrM 12466 0 0 0 0 0 0 0 16-3584
+chrM 12467 0 0 0 0 0 0 0 16-3584
+chrM 12468 0 0 0 0 0 0 0 16-3584
+chrM 12469 0 0 0 0 0 0 0 16-3584
+chrM 12470 0 0 0 0 0 0 0 16-3584
+chrM 12471 0 0 0 0 0 0 0 16-3584
+chrM 12472 0 0 0 0 0 0 0 16-3584
+chrM 12473 0 0 0 0 0 0 0 16-3584
+chrM 12474 0 0 0 0 0 0 0 16-3584
+chrM 12475 0 0 0 0 0 0 0 16-3584
+chrM 12476 0 0 0 0 0 0 0 16-3584
+chrM 12477 0 0 0 0 0 0 0 16-3584
+chrM 12478 0 0 0 0 0 0 0 16-3584
+chrM 12479 0 0 0 0 0 0 0 16-3584
+chrM 12480 0 0 0 0 0 0 0 16-3584
+chrM 12481 0 0 0 0 0 0 0 16-3584
+chrM 12482 0 0 0 0 0 0 0 16-3584
+chrM 12483 0 0 0 0 0 0 0 16-3584
+chrM 12484 0 0 0 0 0 0 0 16-3584
+chrM 12485 0 0 0 0 0 0 0 16-3584
+chrM 12486 0 0 0 0 0 0 0 16-3584
+chrM 12487 0 0 0 0 0 0 0 16-3584
+chrM 12488 0 0 0 0 0 0 0 16-3584
+chrM 12489 0 0 0 0 0 0 0 16-3584
+chrM 12490 0 0 0 0 0 0 0 16-3584
+chrM 12491 0 0 0 0 0 0 0 16-3584
+chrM 12492 0 0 0 0 0 0 0 16-3584
+chrM 12493 0 0 0 0 0 0 0 16-3584
+chrM 12494 0 0 0 0 0 0 0 16-3584
+chrM 12495 0 0 0 0 0 0 0 16-3584
+chrM 12496 0 0 0 0 0 0 0 16-3584
+chrM 12497 0 0 0 0 0 0 0 16-3584
+chrM 12498 0 0 0 0 0 0 0 16-3584
+chrM 12499 0 0 0 0 0 0 0 16-3584
+chrM 12500 0 0 0 0 0 0 0 16-3584
+chrM 12501 0 0 0 0 0 0 0 16-3584
+chrM 12502 0 0 0 0 0 0 0 16-3584
+chrM 12503 0 0 0 0 0 0 0 16-3584
+chrM 12504 0 0 0 0 0 0 0 16-3584
+chrM 12505 0 0 0 0 0 0 0 16-3584
+chrM 12506 0 0 0 0 0 0 0 16-3584
+chrM 12507 0 0 0 0 0 0 0 16-3584
+chrM 12508 0 0 0 0 0 0 0 16-3584
+chrM 12509 0 0 0 0 0 0 0 16-3584
+chrM 12510 0 0 0 0 0 0 0 16-3584
+chrM 12511 0 0 0 0 0 0 0 16-3584
+chrM 12512 0 0 0 0 0 0 0 16-3584
+chrM 12513 0 0 0 0 0 0 0 16-3584
+chrM 12514 0 0 0 0 0 0 0 16-3584
+chrM 12515 0 0 0 0 0 0 0 16-3584
+chrM 12516 0 0 0 0 0 0 0 16-3584
+chrM 12517 0 0 0 0 0 0 0 16-3584
+chrM 12518 0 0 0 0 0 0 0 16-3584
+chrM 12519 0 0 0 0 0 0 0 16-3584
+chrM 12520 0 0 0 0 0 0 0 16-3584
+chrM 12521 0 0 0 0 0 0 0 16-3584
+chrM 12522 0 0 0 0 0 0 0 16-3584
+chrM 12523 0 0 0 0 0 0 0 16-3584
+chrM 12524 0 0 0 0 0 0 0 16-3584
+chrM 12525 0 0 0 0 0 0 0 16-3584
+chrM 12526 0 0 0 0 0 0 0 16-3584
+chrM 12527 0 0 0 0 0 0 0 16-3584
+chrM 12528 0 0 0 0 0 0 0 16-3584
+chrM 12529 0 0 0 0 0 0 0 16-3584
+chrM 12530 0 0 0 0 0 0 0 16-3584
+chrM 12531 0 0 0 0 0 0 0 16-3584
+chrM 12532 0 0 0 0 0 0 0 16-3584
+chrM 12533 0 0 0 0 0 0 0 16-3584
+chrM 12534 0 0 0 0 0 0 0 16-3584
+chrM 12535 0 0 0 0 0 0 0 16-3584
+chrM 12536 0 0 0 0 0 0 0 16-3584
+chrM 12537 0 0 0 0 0 0 0 16-3584
+chrM 12538 0 0 0 0 0 0 0 16-3584
+chrM 12539 0 0 0 0 0 0 0 16-3584
+chrM 12540 0 0 0 0 0 0 0 16-3584
+chrM 12541 0 0 0 0 0 0 0 16-3584
+chrM 12542 0 0 0 0 0 0 0 16-3584
+chrM 12543 0 0 0 0 0 0 0 16-3584
+chrM 12544 0 0 0 0 0 0 0 16-3584
+chrM 12545 0 0 0 0 0 0 0 16-3584
+chrM 12546 0 0 0 0 0 0 0 16-3584
+chrM 12547 0 0 0 0 0 0 0 16-3584
+chrM 12548 0 0 0 0 0 0 0 16-3584
+chrM 12549 0 0 0 0 0 0 0 16-3584
+chrM 12550 0 0 0 0 0 0 0 16-3584
+chrM 12551 0 0 0 0 0 0 0 16-3584
+chrM 12552 0 0 0 0 0 0 0 16-3584
+chrM 12553 0 0 0 0 0 0 0 16-3584
+chrM 12554 0 0 0 0 0 0 0 16-3584
+chrM 12555 0 0 0 0 0 0 0 16-3584
+chrM 12556 0 0 0 0 0 0 0 16-3584
+chrM 12557 0 0 0 0 0 0 0 16-3584
+chrM 12558 0 0 0 0 0 0 0 16-3584
+chrM 12559 0 0 0 0 0 0 0 16-3584
+chrM 12560 0 0 0 0 0 0 0 16-3584
+chrM 12561 0 0 0 0 0 0 0 16-3584
+chrM 12562 0 0 0 0 0 0 0 16-3584
+chrM 12563 0 0 0 0 0 0 0 16-3584
+chrM 12564 0 0 0 0 0 0 0 16-3584
+chrM 12565 0 0 0 0 0 0 0 16-3584
+chrM 12566 0 0 0 0 0 0 0 16-3584
+chrM 12567 0 0 0 0 0 0 0 16-3584
+chrM 12568 0 0 0 0 0 0 0 16-3584
+chrM 12569 0 0 0 0 0 0 0 16-3584
+chrM 12570 0 0 0 0 0 0 0 16-3584
+chrM 12571 0 0 0 0 0 0 0 16-3584
+chrM 12572 0 0 0 0 0 0 0 16-3584
+chrM 12573 0 0 0 0 0 0 0 16-3584
+chrM 12574 0 0 0 0 0 0 0 16-3584
+chrM 12575 0 0 0 0 0 0 0 16-3584
+chrM 12576 0 0 0 0 0 0 0 16-3584
+chrM 12577 0 0 0 0 0 0 0 16-3584
+chrM 12578 0 0 0 0 0 0 0 16-3584
+chrM 12579 0 0 0 0 0 0 0 16-3584
+chrM 12580 0 0 0 0 0 0 0 16-3584
+chrM 12581 0 0 0 0 0 0 0 16-3584
+chrM 12582 0 0 0 0 0 0 0 16-3584
+chrM 12583 0 0 0 0 0 0 0 16-3584
+chrM 12584 0 0 0 0 0 0 0 16-3584
+chrM 12585 0 0 0 0 0 0 0 16-3584
+chrM 12586 0 0 0 0 0 0 0 16-3584
+chrM 12587 0 0 0 0 0 0 0 16-3584
+chrM 12588 0 0 0 0 0 0 0 16-3584
+chrM 12589 0 0 0 0 0 0 0 16-3584
+chrM 12590 0 0 0 0 0 0 0 16-3584
+chrM 12591 0 0 0 0 0 0 0 16-3584
+chrM 12592 0 0 0 0 0 0 0 16-3584
+chrM 12593 0 0 0 0 0 0 0 16-3584
+chrM 12594 0 0 0 0 0 0 0 16-3584
+chrM 12595 0 0 0 0 0 0 0 16-3584
+chrM 12596 0 0 0 0 0 0 0 16-3584
+chrM 12597 0 0 0 0 0 0 0 16-3584
+chrM 12598 0 0 0 0 0 0 0 16-3584
+chrM 12599 0 0 0 0 0 0 0 16-3584
+chrM 12600 0 0 0 0 0 0 0 16-3584
+chrM 12601 0 0 0 0 0 0 0 16-3584
+chrM 12602 0 0 0 0 0 0 0 16-3584
+chrM 12603 0 0 0 0 0 0 0 16-3584
+chrM 12604 0 0 0 0 0 0 0 16-3584
+chrM 12605 0 0 0 0 0 0 0 16-3584
+chrM 12606 0 0 0 0 0 0 0 16-3584
+chrM 12607 0 0 0 0 0 0 0 16-3584
+chrM 12608 0 0 0 0 0 0 0 16-3584
+chrM 12609 0 0 0 0 0 0 0 16-3584
+chrM 12610 0 0 0 0 0 0 0 16-3584
+chrM 12611 0 0 0 0 0 0 0 16-3584
+chrM 12612 0 0 0 0 0 0 0 16-3584
+chrM 12613 0 0 0 0 0 0 0 16-3584
+chrM 12614 0 0 0 0 0 0 0 16-3584
+chrM 12615 0 0 0 0 0 0 0 16-3584
+chrM 12616 0 0 0 0 0 0 0 16-3584
+chrM 12617 0 0 0 0 0 0 0 16-3584
+chrM 12618 0 0 0 0 0 0 0 16-3584
+chrM 12619 0 0 0 0 0 0 0 16-3584
+chrM 12620 0 0 0 0 0 0 0 16-3584
+chrM 12621 0 0 0 0 0 0 0 16-3584
+chrM 12622 0 0 0 0 0 0 0 16-3584
+chrM 12623 0 0 0 0 0 0 0 16-3584
+chrM 12624 0 0 0 0 0 0 0 16-3584
+chrM 12625 0 0 0 0 0 0 0 16-3584
+chrM 12626 0 0 0 0 0 0 0 16-3584
+chrM 12627 0 0 0 0 0 0 0 16-3584
+chrM 12628 0 0 0 0 0 0 0 16-3584
+chrM 12629 0 0 0 0 0 0 0 16-3584
+chrM 12630 0 0 0 0 0 0 0 16-3584
+chrM 12631 0 0 0 0 0 0 0 16-3584
+chrM 12632 0 0 0 0 0 0 0 16-3584
+chrM 12633 0 0 0 0 0 0 0 16-3584
+chrM 12634 0 0 0 0 0 0 0 16-3584
+chrM 12635 0 0 0 0 0 0 0 16-3584
+chrM 12636 0 0 0 0 0 0 0 16-3584
+chrM 12637 0 0 0 0 0 0 0 16-3584
+chrM 12638 0 0 0 0 0 0 0 16-3584
+chrM 12639 0 0 0 0 0 0 0 16-3584
+chrM 12640 0 0 0 0 0 0 0 16-3584
+chrM 12641 0 0 0 0 0 0 0 16-3584
+chrM 12642 0 0 0 0 0 0 0 16-3584
+chrM 12643 0 0 0 0 0 0 0 16-3584
+chrM 12644 0 0 0 0 0 0 0 16-3584
+chrM 12645 0 0 0 0 0 0 0 16-3584
+chrM 12646 0 0 0 0 0 0 0 16-3584
+chrM 12647 0 0 0 0 0 0 0 16-3584
+chrM 12648 0 0 0 0 0 0 0 16-3584
+chrM 12649 0 0 0 0 0 0 0 16-3584
+chrM 12650 0 0 0 0 0 0 0 16-3584
+chrM 12651 0 0 0 0 0 0 0 16-3584
+chrM 12652 0 0 0 0 0 0 0 16-3584
+chrM 12653 0 0 0 0 0 0 0 16-3584
+chrM 12654 0 0 0 0 0 0 0 16-3584
+chrM 12655 0 0 0 0 0 0 0 16-3584
+chrM 12656 0 0 0 0 0 0 0 16-3584
+chrM 12657 0 0 0 0 0 0 0 16-3584
+chrM 12658 0 0 0 0 0 0 0 16-3584
+chrM 12659 0 0 0 0 0 0 0 16-3584
+chrM 12660 0 0 0 0 0 0 0 16-3584
+chrM 12661 0 0 0 0 0 0 0 16-3584
+chrM 12662 0 0 0 0 0 0 0 16-3584
+chrM 12663 0 0 0 0 0 0 0 16-3584
+chrM 12664 0 0 0 0 0 0 0 16-3584
+chrM 12665 0 0 0 0 0 0 0 16-3584
+chrM 12666 0 0 0 0 0 0 0 16-3584
+chrM 12667 0 0 0 0 0 0 0 16-3584
+chrM 12668 0 0 0 0 0 0 0 16-3584
+chrM 12669 0 0 0 0 0 0 0 16-3584
+chrM 12670 0 0 0 0 0 0 0 16-3584
+chrM 12671 0 0 0 0 0 0 0 16-3584
+chrM 12672 0 0 0 0 0 0 0 16-3584
+chrM 12673 0 0 0 0 0 0 0 16-3584
+chrM 12674 0 0 0 0 0 0 0 16-3584
+chrM 12675 0 0 0 0 0 0 0 16-3584
+chrM 12676 0 0 0 0 0 0 0 16-3584
+chrM 12677 0 0 0 0 0 0 0 16-3584
+chrM 12678 0 0 0 0 0 0 0 16-3584
+chrM 12679 0 0 0 0 0 0 0 16-3584
+chrM 12680 0 0 0 0 0 0 0 16-3584
+chrM 12681 0 0 0 0 0 0 0 16-3584
+chrM 12682 0 0 0 0 0 0 0 16-3584
+chrM 12683 0 0 0 0 0 0 0 16-3584
+chrM 12684 0 0 0 0 0 0 0 16-3584
+chrM 12685 0 0 0 0 0 0 0 16-3584
+chrM 12686 0 0 0 0 0 0 0 16-3584
+chrM 12687 0 0 0 0 0 0 0 16-3584
+chrM 12688 0 0 0 0 0 0 0 16-3584
+chrM 12689 0 0 0 0 0 0 0 16-3584
+chrM 12690 0 0 0 0 0 0 0 16-3584
+chrM 12691 0 0 0 0 0 0 0 16-3584
+chrM 12692 0 0 0 0 0 0 0 16-3584
+chrM 12693 0 0 0 0 0 0 0 16-3584
+chrM 12694 0 0 0 0 0 0 0 16-3584
+chrM 12695 0 0 0 0 0 0 0 16-3584
+chrM 12696 0 0 0 0 0 0 0 16-3584
+chrM 12697 0 0 0 0 0 0 0 16-3584
+chrM 12698 0 0 0 0 0 0 0 16-3584
+chrM 12699 0 0 0 0 0 0 0 16-3584
+chrM 12700 0 0 0 0 0 0 0 16-3584
+chrM 12701 0 0 0 0 0 0 0 16-3584
+chrM 12702 0 0 0 0 0 0 0 16-3584
+chrM 12703 0 0 0 0 0 0 0 16-3584
+chrM 12704 0 0 0 0 0 0 0 16-3584
+chrM 12705 0 0 0 0 0 0 0 16-3584
+chrM 12706 0 0 0 0 0 0 0 16-3584
+chrM 12707 0 0 0 0 0 0 0 16-3584
+chrM 12708 0 0 0 0 0 0 0 16-3584
+chrM 12709 0 0 0 0 0 0 0 16-3584
+chrM 12710 0 0 0 0 0 0 0 16-3584
+chrM 12711 0 0 0 0 0 0 0 16-3584
+chrM 12712 0 0 0 0 0 0 0 16-3584
+chrM 12713 0 0 0 0 0 0 0 16-3584
+chrM 12714 0 0 0 0 0 0 0 16-3584
+chrM 12715 0 0 0 0 0 0 0 16-3584
+chrM 12716 0 0 0 0 0 0 0 16-3584
+chrM 12717 0 0 0 0 0 0 0 16-3584
+chrM 12718 0 0 0 0 0 0 0 16-3584
+chrM 12719 0 0 0 0 0 0 0 16-3584
+chrM 12720 0 0 0 0 0 0 0 16-3584
+chrM 12721 0 0 0 0 0 0 0 16-3584
+chrM 12722 0 0 0 0 0 0 0 16-3584
+chrM 12723 0 0 0 0 0 0 0 16-3584
+chrM 12724 0 0 0 0 0 0 0 16-3584
+chrM 12725 0 0 0 0 0 0 0 16-3584
+chrM 12726 0 0 0 0 0 0 0 16-3584
+chrM 12727 0 0 0 0 0 0 0 16-3584
+chrM 12728 0 0 0 0 0 0 0 16-3584
+chrM 12729 0 0 0 0 0 0 0 16-3584
+chrM 12730 0 0 0 0 0 0 0 16-3584
+chrM 12731 0 0 0 0 0 0 0 16-3584
+chrM 12732 0 0 0 0 0 0 0 16-3584
+chrM 12733 0 0 0 0 0 0 0 16-3584
+chrM 12734 0 0 0 0 0 0 0 16-3584
+chrM 12735 0 0 0 0 0 0 0 16-3584
+chrM 12736 0 0 0 0 0 0 0 16-3584
+chrM 12737 0 0 0 0 0 0 0 16-3584
+chrM 12738 0 0 0 0 0 0 0 16-3584
+chrM 12739 0 0 0 0 0 0 0 16-3584
+chrM 12740 0 0 0 0 0 0 0 16-3584
+chrM 12741 0 0 0 0 0 0 0 16-3584
+chrM 12742 0 0 0 0 0 0 0 16-3584
+chrM 12743 0 0 0 0 0 0 0 16-3584
+chrM 12744 0 0 0 0 0 0 0 16-3584
+chrM 12745 0 0 0 0 0 0 0 16-3584
+chrM 12746 0 0 0 0 0 0 0 16-3584
+chrM 12747 0 0 0 0 0 0 0 16-3584
+chrM 12748 0 0 0 0 0 0 0 16-3584
+chrM 12749 0 0 0 0 0 0 0 16-3584
+chrM 12750 0 0 0 0 0 0 0 16-3584
+chrM 12751 0 0 0 0 0 0 0 16-3584
+chrM 12752 0 0 0 0 0 0 0 16-3584
+chrM 12753 0 0 0 0 0 0 0 16-3584
+chrM 12754 0 0 0 0 0 0 0 16-3584
+chrM 12755 0 0 0 0 0 0 0 16-3584
+chrM 12756 0 0 0 0 0 0 0 16-3584
+chrM 12757 0 0 0 0 0 0 0 16-3584
+chrM 12758 0 0 0 0 0 0 0 16-3584
+chrM 12759 0 0 0 0 0 0 0 16-3584
+chrM 12760 0 0 0 0 0 0 0 16-3584
+chrM 12761 0 0 0 0 0 0 0 16-3584
+chrM 12762 0 0 0 0 0 0 0 16-3584
+chrM 12763 0 0 0 0 0 0 0 16-3584
+chrM 12764 0 0 0 0 0 0 0 16-3584
+chrM 12765 0 0 0 0 0 0 0 16-3584
+chrM 12766 0 0 0 0 0 0 0 16-3584
+chrM 12767 0 0 0 0 0 0 0 16-3584
+chrM 12768 0 0 0 0 0 0 0 16-3584
+chrM 12769 0 0 0 0 0 0 0 16-3584
+chrM 12770 0 0 0 0 0 0 0 16-3584
+chrM 12771 0 0 0 0 0 0 0 16-3584
+chrM 12772 0 0 0 0 0 0 0 16-3584
+chrM 12773 0 0 0 0 0 0 0 16-3584
+chrM 12774 0 0 0 0 0 0 0 16-3584
+chrM 12775 0 0 0 0 0 0 0 16-3584
+chrM 12776 0 0 0 0 0 0 0 16-3584
+chrM 12777 0 0 0 0 0 0 0 16-3584
+chrM 12778 0 0 0 0 0 0 0 16-3584
+chrM 12779 0 0 0 0 0 0 0 16-3584
+chrM 12780 0 0 0 0 0 0 0 16-3584
+chrM 12781 0 0 0 0 0 0 0 16-3584
+chrM 12782 0 0 0 0 0 0 0 16-3584
+chrM 12783 0 0 0 0 0 0 0 16-3584
+chrM 12784 0 0 0 0 0 0 0 16-3584
+chrM 12785 0 0 0 0 0 0 0 16-3584
+chrM 12786 0 0 0 0 0 0 0 16-3584
+chrM 12787 0 0 0 0 0 0 0 16-3584
+chrM 12788 0 0 0 0 0 0 0 16-3584
+chrM 12789 0 0 0 0 0 0 0 16-3584
+chrM 12790 0 0 0 0 0 0 0 16-3584
+chrM 12791 0 0 0 0 0 0 0 16-3584
+chrM 12792 0 0 0 0 0 0 0 16-3584
+chrM 12793 0 0 0 0 0 0 0 16-3584
+chrM 12794 0 0 0 0 0 0 0 16-3584
+chrM 12795 0 0 0 0 0 0 0 16-3584
+chrM 12796 0 0 0 0 0 0 0 16-3584
+chrM 12797 0 0 0 0 0 0 0 16-3584
+chrM 12798 0 0 0 0 0 0 0 16-3584
+chrM 12799 0 0 0 0 0 0 0 16-3584
+chrM 12800 0 0 0 0 0 0 0 16-3584
+chrM 12801 0 0 0 0 0 0 0 16-3584
+chrM 12802 0 0 0 0 0 0 0 16-3584
+chrM 12803 0 0 0 0 0 0 0 16-3584
+chrM 12804 0 0 0 0 0 0 0 16-3584
+chrM 12805 0 0 0 0 0 0 0 16-3584
+chrM 12806 0 0 0 0 0 0 0 16-3584
+chrM 12807 0 0 0 0 0 0 0 16-3584
+chrM 12808 0 0 0 0 0 0 0 16-3584
+chrM 12809 0 0 0 0 0 0 0 16-3584
+chrM 12810 0 0 0 0 0 0 0 16-3584
+chrM 12811 0 0 0 0 0 0 0 16-3584
+chrM 12812 0 0 0 0 0 0 0 16-3584
+chrM 12813 0 0 0 0 0 0 0 16-3584
+chrM 12814 0 0 0 0 0 0 0 16-3584
+chrM 12815 0 0 0 0 0 0 0 16-3584
+chrM 12816 0 0 0 0 0 0 0 16-3584
+chrM 12817 0 0 0 0 0 0 0 16-3584
+chrM 12818 0 0 0 0 0 0 0 16-3584
+chrM 12819 0 0 0 0 0 0 0 16-3584
+chrM 12820 0 0 0 0 0 0 0 16-3584
+chrM 12821 0 0 0 0 0 0 0 16-3584
+chrM 12822 0 0 0 0 0 0 0 16-3584
+chrM 12823 0 0 0 0 0 0 0 16-3584
+chrM 12824 0 0 0 0 0 0 0 16-3584
+chrM 12825 0 0 0 0 0 0 0 16-3584
+chrM 12826 0 0 0 0 0 0 0 16-3584
+chrM 12827 0 0 0 0 0 0 0 16-3584
+chrM 12828 0 0 0 0 0 0 0 16-3584
+chrM 12829 0 0 0 0 0 0 0 16-3584
+chrM 12830 0 0 0 0 0 0 0 16-3584
+chrM 12831 0 0 0 0 0 0 0 16-3584
+chrM 12832 0 0 0 0 0 0 0 16-3584
+chrM 12833 0 0 0 0 0 0 0 16-3584
+chrM 12834 0 0 0 0 0 0 0 16-3584
+chrM 12835 0 0 0 0 0 0 0 16-3584
+chrM 12836 0 0 0 0 0 0 0 16-3584
+chrM 12837 0 0 0 0 0 0 0 16-3584
+chrM 12838 0 0 0 0 0 0 0 16-3584
+chrM 12839 0 0 0 0 0 0 0 16-3584
+chrM 12840 0 0 0 0 0 0 0 16-3584
+chrM 12841 0 0 0 0 0 0 0 16-3584
+chrM 12842 0 0 0 0 0 0 0 16-3584
+chrM 12843 0 0 0 0 0 0 0 16-3584
+chrM 12844 0 0 0 0 0 0 0 16-3584
+chrM 12845 0 0 0 0 0 0 0 16-3584
+chrM 12846 0 0 0 0 0 0 0 16-3584
+chrM 12847 0 0 0 0 0 0 0 16-3584
+chrM 12848 0 0 0 0 0 0 0 16-3584
+chrM 12849 0 0 0 0 0 0 0 16-3584
+chrM 12850 0 0 0 0 0 0 0 16-3584
+chrM 12851 0 0 0 0 0 0 0 16-3584
+chrM 12852 0 0 0 0 0 0 0 16-3584
+chrM 12853 0 0 0 0 0 0 0 16-3584
+chrM 12854 0 0 0 0 0 0 0 16-3584
+chrM 12855 0 0 0 0 0 0 0 16-3584
+chrM 12856 0 0 0 0 0 0 0 16-3584
+chrM 12857 0 0 0 0 0 0 0 16-3584
+chrM 12858 0 0 0 0 0 0 0 16-3584
+chrM 12859 0 0 0 0 0 0 0 16-3584
+chrM 12860 0 0 0 0 0 0 0 16-3584
+chrM 12861 0 0 0 0 0 0 0 16-3584
+chrM 12862 0 0 0 0 0 0 0 16-3584
+chrM 12863 0 0 0 0 0 0 0 16-3584
+chrM 12864 0 0 0 0 0 0 0 16-3584
+chrM 12865 0 0 0 0 0 0 0 16-3584
+chrM 12866 0 0 0 0 0 0 0 16-3584
+chrM 12867 0 0 0 0 0 0 0 16-3584
+chrM 12868 0 0 0 0 0 0 0 16-3584
+chrM 12869 0 0 0 0 0 0 0 16-3584
+chrM 12870 0 0 0 0 0 0 0 16-3584
+chrM 12871 0 0 0 0 0 0 0 16-3584
+chrM 12872 0 0 0 0 0 0 0 16-3584
+chrM 12873 0 0 0 0 0 0 0 16-3584
+chrM 12874 0 0 0 0 0 0 0 16-3584
+chrM 12875 0 0 0 0 0 0 0 16-3584
+chrM 12876 0 0 0 0 0 0 0 16-3584
+chrM 12877 0 0 0 0 0 0 0 16-3584
+chrM 12878 0 0 0 0 0 0 0 16-3584
+chrM 12879 0 0 0 0 0 0 0 16-3584
+chrM 12880 0 0 0 0 0 0 0 16-3584
+chrM 12881 0 0 0 0 0 0 0 16-3584
+chrM 12882 0 0 0 0 0 0 0 16-3584
+chrM 12883 0 0 0 0 0 0 0 16-3584
+chrM 12884 0 0 0 0 0 0 0 16-3584
+chrM 12885 0 0 0 0 0 0 0 16-3584
+chrM 12886 0 0 0 0 0 0 0 16-3584
+chrM 12887 0 0 0 0 0 0 0 16-3584
+chrM 12888 0 0 0 0 0 0 0 16-3584
+chrM 12889 0 0 0 0 0 0 0 16-3584
+chrM 12890 0 0 0 0 0 0 0 16-3584
+chrM 12891 0 0 0 0 0 0 0 16-3584
+chrM 12892 0 0 0 0 0 0 0 16-3584
+chrM 12893 0 0 0 0 0 0 0 16-3584
+chrM 12894 0 0 0 0 0 0 0 16-3584
+chrM 12895 0 0 0 0 0 0 0 16-3584
+chrM 12896 0 0 0 0 0 0 0 16-3584
+chrM 12897 0 0 0 0 0 0 0 16-3584
+chrM 12898 0 0 0 0 0 0 0 16-3584
+chrM 12899 0 0 0 0 0 0 0 16-3584
+chrM 12900 0 0 0 0 0 0 0 16-3584
+chrM 12901 0 0 0 0 0 0 0 16-3584
+chrM 12902 0 0 0 0 0 0 0 16-3584
+chrM 12903 0 0 0 0 0 0 0 16-3584
+chrM 12904 0 0 0 0 0 0 0 16-3584
+chrM 12905 0 0 0 0 0 0 0 16-3584
+chrM 12906 0 0 0 0 0 0 0 16-3584
+chrM 12907 0 0 0 0 0 0 0 16-3584
+chrM 12908 0 0 0 0 0 0 0 16-3584
+chrM 12909 0 0 0 0 0 0 0 16-3584
+chrM 12910 0 0 0 0 0 0 0 16-3584
+chrM 12911 0 0 0 0 0 0 0 16-3584
+chrM 12912 0 0 0 0 0 0 0 16-3584
+chrM 12913 0 0 0 0 0 0 0 16-3584
+chrM 12914 0 0 0 0 0 0 0 16-3584
+chrM 12915 0 0 0 0 0 0 0 16-3584
+chrM 12916 0 0 0 0 0 0 0 16-3584
+chrM 12917 0 0 0 0 0 0 0 16-3584
+chrM 12918 0 0 0 0 0 0 0 16-3584
+chrM 12919 0 0 0 0 0 0 0 16-3584
+chrM 12920 0 0 0 0 0 0 0 16-3584
+chrM 12921 0 0 0 0 0 0 0 16-3584
+chrM 12922 0 0 0 0 0 0 0 16-3584
+chrM 12923 0 0 0 0 0 0 0 16-3584
+chrM 12924 0 0 0 0 0 0 0 16-3584
+chrM 12925 0 0 0 0 0 0 0 16-3584
+chrM 12926 0 0 0 0 0 0 0 16-3584
+chrM 12927 0 0 0 0 0 0 0 16-3584
+chrM 12928 0 0 0 0 0 0 0 16-3584
+chrM 12929 0 0 0 0 0 0 0 16-3584
+chrM 12930 0 0 0 0 0 0 0 16-3584
+chrM 12931 0 0 0 0 0 0 0 16-3584
+chrM 12932 0 0 0 0 0 0 0 16-3584
+chrM 12933 0 0 0 0 0 0 0 16-3584
+chrM 12934 0 0 0 0 0 0 0 16-3584
+chrM 12935 0 0 0 0 0 0 0 16-3584
+chrM 12936 0 0 0 0 0 0 0 16-3584
+chrM 12937 0 0 0 0 0 0 0 16-3584
+chrM 12938 0 0 0 0 0 0 0 16-3584
+chrM 12939 0 0 0 0 0 0 0 16-3584
+chrM 12940 0 0 0 0 0 0 0 16-3584
+chrM 12941 0 0 0 0 0 0 0 16-3584
+chrM 12942 0 0 0 0 0 0 0 16-3584
+chrM 12943 0 0 0 0 0 0 0 16-3584
+chrM 12944 0 0 0 0 0 0 0 16-3584
+chrM 12945 0 0 0 0 0 0 0 16-3584
+chrM 12946 0 0 0 0 0 0 0 16-3584
+chrM 12947 0 0 0 0 0 0 0 16-3584
+chrM 12948 0 0 0 0 0 0 0 16-3584
+chrM 12949 0 0 0 0 0 0 0 16-3584
+chrM 12950 0 0 0 0 0 0 0 16-3584
+chrM 12951 0 0 0 0 0 0 0 16-3584
+chrM 12952 0 0 0 0 0 0 0 16-3584
+chrM 12953 0 0 0 0 0 0 0 16-3584
+chrM 12954 0 0 0 0 0 0 0 16-3584
+chrM 12955 0 0 0 0 0 0 0 16-3584
+chrM 12956 0 0 0 0 0 0 0 16-3584
+chrM 12957 0 0 0 0 0 0 0 16-3584
+chrM 12958 0 0 0 0 0 0 0 16-3584
+chrM 12959 0 0 0 0 0 0 0 16-3584
+chrM 12960 0 0 0 0 0 0 0 16-3584
+chrM 12961 0 0 0 0 0 0 0 16-3584
+chrM 12962 0 0 0 0 0 0 0 16-3584
+chrM 12963 0 0 0 0 0 0 0 16-3584
+chrM 12964 0 0 0 0 0 0 0 16-3584
+chrM 12965 0 0 0 0 0 0 0 16-3584
+chrM 12966 0 0 0 0 0 0 0 16-3584
+chrM 12967 0 0 0 0 0 0 0 16-3584
+chrM 12968 0 0 0 0 0 0 0 16-3584
+chrM 12969 0 0 0 0 0 0 0 16-3584
+chrM 12970 0 0 0 0 0 0 0 16-3584
+chrM 12971 0 0 0 0 0 0 0 16-3584
+chrM 12972 0 0 0 0 0 0 0 16-3584
+chrM 12973 0 0 0 0 0 0 0 16-3584
+chrM 12974 0 0 0 0 0 0 0 16-3584
+chrM 12975 0 0 0 0 0 0 0 16-3584
+chrM 12976 0 0 0 0 0 0 0 16-3584
+chrM 12977 0 0 0 0 0 0 0 16-3584
+chrM 12978 0 0 0 0 0 0 0 16-3584
+chrM 12979 0 0 0 0 0 0 0 16-3584
+chrM 12980 0 0 0 0 0 0 0 16-3584
+chrM 12981 0 0 0 0 0 0 0 16-3584
+chrM 12982 0 0 0 0 0 0 0 16-3584
+chrM 12983 0 0 0 0 0 0 0 16-3584
+chrM 12984 0 0 0 0 0 0 0 16-3584
+chrM 12985 0 0 0 0 0 0 0 16-3584
+chrM 12986 0 0 0 0 0 0 0 16-3584
+chrM 12987 0 0 0 0 0 0 0 16-3584
+chrM 12988 0 0 0 0 0 0 0 16-3584
+chrM 12989 0 0 0 0 0 0 0 16-3584
+chrM 12990 0 0 0 0 0 0 0 16-3584
+chrM 12991 0 0 0 0 0 0 0 16-3584
+chrM 12992 0 0 0 0 0 0 0 16-3584
+chrM 12993 0 0 0 0 0 0 0 16-3584
+chrM 12994 0 0 0 0 0 0 0 16-3584
+chrM 12995 0 0 0 0 0 0 0 16-3584
+chrM 12996 0 0 0 0 0 0 0 16-3584
+chrM 12997 0 0 0 0 0 0 0 16-3584
+chrM 12998 0 0 0 0 0 0 0 16-3584
+chrM 12999 0 0 0 0 0 0 0 16-3584
+chrM 13000 0 0 0 0 0 0 0 16-3584
+chrM 13001 0 0 0 0 0 0 0 16-3584
+chrM 13002 0 0 0 0 0 0 0 16-3584
+chrM 13003 0 0 0 0 0 0 0 16-3584
+chrM 13004 0 0 0 0 0 0 0 16-3584
+chrM 13005 0 0 0 0 0 0 0 16-3584
+chrM 13006 0 0 0 0 0 0 0 16-3584
+chrM 13007 0 0 0 0 0 0 0 16-3584
+chrM 13008 0 0 0 0 0 0 0 16-3584
+chrM 13009 0 0 0 0 0 0 0 16-3584
+chrM 13010 0 0 0 0 0 0 0 16-3584
+chrM 13011 0 0 0 0 0 0 0 16-3584
+chrM 13012 0 0 0 0 0 0 0 16-3584
+chrM 13013 0 0 0 0 0 0 0 16-3584
+chrM 13014 0 0 0 0 0 0 0 16-3584
+chrM 13015 0 0 0 0 0 0 0 16-3584
+chrM 13016 0 0 0 0 0 0 0 16-3584
+chrM 13017 0 0 0 0 0 0 0 16-3584
+chrM 13018 0 0 0 0 0 0 0 16-3584
+chrM 13019 0 0 0 0 0 0 0 16-3584
+chrM 13020 0 0 0 0 0 0 0 16-3584
+chrM 13021 0 0 0 0 0 0 0 16-3584
+chrM 13022 0 0 0 0 0 0 0 16-3584
+chrM 13023 0 0 0 0 0 0 0 16-3584
+chrM 13024 0 0 0 0 0 0 0 16-3584
+chrM 13025 0 0 0 0 0 0 0 16-3584
+chrM 13026 0 0 0 0 0 0 0 16-3584
+chrM 13027 0 0 0 0 0 0 0 16-3584
+chrM 13028 0 0 0 0 0 0 0 16-3584
+chrM 13029 0 0 0 0 0 0 0 16-3584
+chrM 13030 0 0 0 0 0 0 0 16-3584
+chrM 13031 0 0 0 0 0 0 0 16-3584
+chrM 13032 0 0 0 0 0 0 0 16-3584
+chrM 13033 0 0 0 0 0 0 0 16-3584
+chrM 13034 0 0 0 0 0 0 0 16-3584
+chrM 13035 0 0 0 0 0 0 0 16-3584
+chrM 13036 0 0 0 0 0 0 0 16-3584
+chrM 13037 0 0 0 0 0 0 0 16-3584
+chrM 13038 0 0 0 0 0 0 0 16-3584
+chrM 13039 0 0 0 0 0 0 0 16-3584
+chrM 13040 0 0 0 0 0 0 0 16-3584
+chrM 13041 0 0 0 0 0 0 0 16-3584
+chrM 13042 0 0 0 0 0 0 0 16-3584
+chrM 13043 0 0 0 0 0 0 0 16-3584
+chrM 13044 0 0 0 0 0 0 0 16-3584
+chrM 13045 0 0 0 0 0 0 0 16-3584
+chrM 13046 0 0 0 0 0 0 0 16-3584
+chrM 13047 0 0 0 0 0 0 0 16-3584
+chrM 13048 0 0 0 0 0 0 0 16-3584
+chrM 13049 0 0 0 0 0 0 0 16-3584
+chrM 13050 0 0 0 0 0 0 0 16-3584
+chrM 13051 0 0 0 0 0 0 0 16-3584
+chrM 13052 0 0 0 0 0 0 0 16-3584
+chrM 13053 0 0 0 0 0 0 0 16-3584
+chrM 13054 0 0 0 0 0 0 0 16-3584
+chrM 13055 0 0 0 0 0 0 0 16-3584
+chrM 13056 0 0 0 0 0 0 0 16-3584
+chrM 13057 0 0 0 0 0 0 0 16-3584
+chrM 13058 0 0 0 0 0 0 0 16-3584
+chrM 13059 0 0 0 0 0 0 0 16-3584
+chrM 13060 0 0 0 0 0 0 0 16-3584
+chrM 13061 0 0 0 0 0 0 0 16-3584
+chrM 13062 0 0 0 0 0 0 0 16-3584
+chrM 13063 0 0 0 0 0 0 0 16-3584
+chrM 13064 0 0 0 0 0 0 0 16-3584
+chrM 13065 0 0 0 0 0 0 0 16-3584
+chrM 13066 0 0 0 0 0 0 0 16-3584
+chrM 13067 0 0 0 0 0 0 0 16-3584
+chrM 13068 0 0 0 0 0 0 0 16-3584
+chrM 13069 0 0 0 0 0 0 0 16-3584
+chrM 13070 0 0 0 0 0 0 0 16-3584
+chrM 13071 0 0 0 0 0 0 0 16-3584
+chrM 13072 0 0 0 0 0 0 0 16-3584
+chrM 13073 0 0 0 0 0 0 0 16-3584
+chrM 13074 0 0 0 0 0 0 0 16-3584
+chrM 13075 0 0 0 0 0 0 0 16-3584
+chrM 13076 0 0 0 0 0 0 0 16-3584
+chrM 13077 0 0 0 0 0 0 0 16-3584
+chrM 13078 0 0 0 0 0 0 0 16-3584
+chrM 13079 0 0 0 0 0 0 0 16-3584
+chrM 13080 0 0 0 0 0 0 0 16-3584
+chrM 13081 0 0 0 0 0 0 0 16-3584
+chrM 13082 0 0 0 0 0 0 0 16-3584
+chrM 13083 0 0 0 0 0 0 0 16-3584
+chrM 13084 0 0 0 0 0 0 0 16-3584
+chrM 13085 0 0 0 0 0 0 0 16-3584
+chrM 13086 0 0 0 0 0 0 0 16-3584
+chrM 13087 0 0 0 0 0 0 0 16-3584
+chrM 13088 0 0 0 0 0 0 0 16-3584
+chrM 13089 0 0 0 0 0 0 0 16-3584
+chrM 13090 0 0 0 0 0 0 0 16-3584
+chrM 13091 0 0 0 0 0 0 0 16-3584
+chrM 13092 0 0 0 0 0 0 0 16-3584
+chrM 13093 0 0 0 0 0 0 0 16-3584
+chrM 13094 0 0 0 0 0 0 0 16-3584
+chrM 13095 0 0 0 0 0 0 0 16-3584
+chrM 13096 0 0 0 0 0 0 0 16-3584
+chrM 13097 0 0 0 0 0 0 0 16-3584
+chrM 13098 0 0 0 0 0 0 0 16-3584
+chrM 13099 0 0 0 0 0 0 0 16-3584
+chrM 13100 0 0 0 0 0 0 0 16-3584
+chrM 13101 0 0 0 0 0 0 0 16-3584
+chrM 13102 0 0 0 0 0 0 0 16-3584
+chrM 13103 0 0 0 0 0 0 0 16-3584
+chrM 13104 0 0 0 0 0 0 0 16-3584
+chrM 13105 0 0 0 0 0 0 0 16-3584
+chrM 13106 0 0 0 0 0 0 0 16-3584
+chrM 13107 0 0 0 0 0 0 0 16-3584
+chrM 13108 0 0 0 0 0 0 0 16-3584
+chrM 13109 0 0 0 0 0 0 0 16-3584
+chrM 13110 0 0 0 0 0 0 0 16-3584
+chrM 13111 0 0 0 0 0 0 0 16-3584
+chrM 13112 0 0 0 0 0 0 0 16-3584
+chrM 13113 0 0 0 0 0 0 0 16-3584
+chrM 13114 0 0 0 0 0 0 0 16-3584
+chrM 13115 0 0 0 0 0 0 0 16-3584
+chrM 13116 0 0 0 0 0 0 0 16-3584
+chrM 13117 0 0 0 0 0 0 0 16-3584
+chrM 13118 0 0 0 0 0 0 0 16-3584
+chrM 13119 0 0 0 0 0 0 0 16-3584
+chrM 13120 0 0 0 0 0 0 0 16-3584
+chrM 13121 0 0 0 0 0 0 0 16-3584
+chrM 13122 0 0 0 0 0 0 0 16-3584
+chrM 13123 0 0 0 0 0 0 0 16-3584
+chrM 13124 0 0 0 0 0 0 0 16-3584
+chrM 13125 0 0 0 0 0 0 0 16-3584
+chrM 13126 0 0 0 0 0 0 0 16-3584
+chrM 13127 0 0 0 0 0 0 0 16-3584
+chrM 13128 0 0 0 0 0 0 0 16-3584
+chrM 13129 0 0 0 0 0 0 0 16-3584
+chrM 13130 0 0 0 0 0 0 0 16-3584
+chrM 13131 0 0 0 0 0 0 0 16-3584
+chrM 13132 0 0 0 0 0 0 0 16-3584
+chrM 13133 0 0 0 0 0 0 0 16-3584
+chrM 13134 0 0 0 0 0 0 0 16-3584
+chrM 13135 0 0 0 0 0 0 0 16-3584
+chrM 13136 0 0 0 0 0 0 0 16-3584
+chrM 13137 0 0 0 0 0 0 0 16-3584
+chrM 13138 0 0 0 0 0 0 0 16-3584
+chrM 13139 0 0 0 0 0 0 0 16-3584
+chrM 13140 0 0 0 0 0 0 0 16-3584
+chrM 13141 0 0 0 0 0 0 0 16-3584
+chrM 13142 0 0 0 0 0 0 0 16-3584
+chrM 13143 0 0 0 0 0 0 0 16-3584
+chrM 13144 0 0 0 0 0 0 0 16-3584
+chrM 13145 0 0 0 0 0 0 0 16-3584
+chrM 13146 0 0 0 0 0 0 0 16-3584
+chrM 13147 0 0 0 0 0 0 0 16-3584
+chrM 13148 0 0 0 0 0 0 0 16-3584
+chrM 13149 0 0 0 0 0 0 0 16-3584
+chrM 13150 0 0 0 0 0 0 0 16-3584
+chrM 13151 0 0 0 0 0 0 0 16-3584
+chrM 13152 0 0 0 0 0 0 0 16-3584
+chrM 13153 0 0 0 0 0 0 0 16-3584
+chrM 13154 0 0 0 0 0 0 0 16-3584
+chrM 13155 0 0 0 0 0 0 0 16-3584
+chrM 13156 0 0 0 0 0 0 0 16-3584
+chrM 13157 0 0 0 0 0 0 0 16-3584
+chrM 13158 0 0 0 0 0 0 0 16-3584
+chrM 13159 0 0 0 0 0 0 0 16-3584
+chrM 13160 0 0 0 0 0 0 0 16-3584
+chrM 13161 0 0 0 0 0 0 0 16-3584
+chrM 13162 0 0 0 0 0 0 0 16-3584
+chrM 13163 0 0 0 0 0 0 0 16-3584
+chrM 13164 0 0 0 0 0 0 0 16-3584
+chrM 13165 0 0 0 0 0 0 0 16-3584
+chrM 13166 0 0 0 0 0 0 0 16-3584
+chrM 13167 0 0 0 0 0 0 0 16-3584
+chrM 13168 0 0 0 0 0 0 0 16-3584
+chrM 13169 0 0 0 0 0 0 0 16-3584
+chrM 13170 0 0 0 0 0 0 0 16-3584
+chrM 13171 0 0 0 0 0 0 0 16-3584
+chrM 13172 0 0 0 0 0 0 0 16-3584
+chrM 13173 0 0 0 0 0 0 0 16-3584
+chrM 13174 0 0 0 0 0 0 0 16-3584
+chrM 13175 0 0 0 0 0 0 0 16-3584
+chrM 13176 0 0 0 0 0 0 0 16-3584
+chrM 13177 0 0 0 0 0 0 0 16-3584
+chrM 13178 0 0 0 0 0 0 0 16-3584
+chrM 13179 0 0 0 0 0 0 0 16-3584
+chrM 13180 0 0 0 0 0 0 0 16-3584
+chrM 13181 0 0 0 0 0 0 0 16-3584
+chrM 13182 0 0 0 0 0 0 0 16-3584
+chrM 13183 0 0 0 0 0 0 0 16-3584
+chrM 13184 0 0 0 0 0 0 0 16-3584
+chrM 13185 0 0 0 0 0 0 0 16-3584
+chrM 13186 0 0 0 0 0 0 0 16-3584
+chrM 13187 0 0 0 0 0 0 0 16-3584
+chrM 13188 0 0 0 0 0 0 0 16-3584
+chrM 13189 0 0 0 0 0 0 0 16-3584
+chrM 13190 0 0 0 0 0 0 0 16-3584
+chrM 13191 0 0 0 0 0 0 0 16-3584
+chrM 13192 0 0 0 0 0 0 0 16-3584
+chrM 13193 0 0 0 0 0 0 0 16-3584
+chrM 13194 0 0 0 0 0 0 0 16-3584
+chrM 13195 0 0 0 0 0 0 0 16-3584
+chrM 13196 0 0 0 0 0 0 0 16-3584
+chrM 13197 0 0 0 0 0 0 0 16-3584
+chrM 13198 0 0 0 0 0 0 0 16-3584
+chrM 13199 0 0 0 0 0 0 0 16-3584
+chrM 13200 0 0 0 0 0 0 0 16-3584
+chrM 13201 0 0 0 0 0 0 0 16-3584
+chrM 13202 0 0 0 0 0 0 0 16-3584
+chrM 13203 0 0 0 0 0 0 0 16-3584
+chrM 13204 0 0 0 0 0 0 0 16-3584
+chrM 13205 0 0 0 0 0 0 0 16-3584
+chrM 13206 0 0 0 0 0 0 0 16-3584
+chrM 13207 0 0 0 0 0 0 0 16-3584
+chrM 13208 0 0 0 0 0 0 0 16-3584
+chrM 13209 0 0 0 0 0 0 0 16-3584
+chrM 13210 0 0 0 0 0 0 0 16-3584
+chrM 13211 0 0 0 0 0 0 0 16-3584
+chrM 13212 0 0 0 0 0 0 0 16-3584
+chrM 13213 0 0 0 0 0 0 0 16-3584
+chrM 13214 0 0 0 0 0 0 0 16-3584
+chrM 13215 0 0 0 0 0 0 0 16-3584
+chrM 13216 0 0 0 0 0 0 0 16-3584
+chrM 13217 0 0 0 0 0 0 0 16-3584
+chrM 13218 0 0 0 0 0 0 0 16-3584
+chrM 13219 0 0 0 0 0 0 0 16-3584
+chrM 13220 0 0 0 0 0 0 0 16-3584
+chrM 13221 0 0 0 0 0 0 0 16-3584
+chrM 13222 0 0 0 0 0 0 0 16-3584
+chrM 13223 0 0 0 0 0 0 0 16-3584
+chrM 13224 0 0 0 0 0 0 0 16-3584
+chrM 13225 0 0 0 0 0 0 0 16-3584
+chrM 13226 0 0 0 0 0 0 0 16-3584
+chrM 13227 0 0 0 0 0 0 0 16-3584
+chrM 13228 0 0 0 0 0 0 0 16-3584
+chrM 13229 0 0 0 0 0 0 0 16-3584
+chrM 13230 0 0 0 0 0 0 0 16-3584
+chrM 13231 0 0 0 0 0 0 0 16-3584
+chrM 13232 0 0 0 0 0 0 0 16-3584
+chrM 13233 0 0 0 0 0 0 0 16-3584
+chrM 13234 0 0 0 0 0 0 0 16-3584
+chrM 13235 0 0 0 0 0 0 0 16-3584
+chrM 13236 0 0 0 0 0 0 0 16-3584
+chrM 13237 0 0 0 0 0 0 0 16-3584
+chrM 13238 0 0 0 0 0 0 0 16-3584
+chrM 13239 0 0 0 0 0 0 0 16-3584
+chrM 13240 0 0 0 0 0 0 0 16-3584
+chrM 13241 0 0 0 0 0 0 0 16-3584
+chrM 13242 0 0 0 0 0 0 0 16-3584
+chrM 13243 0 0 0 0 0 0 0 16-3584
+chrM 13244 0 0 0 0 0 0 0 16-3584
+chrM 13245 0 0 0 0 0 0 0 16-3584
+chrM 13246 0 0 0 0 0 0 0 16-3584
+chrM 13247 0 0 0 0 0 0 0 16-3584
+chrM 13248 0 0 0 0 0 0 0 16-3584
+chrM 13249 0 0 0 0 0 0 0 16-3584
+chrM 13250 0 0 0 0 0 0 0 16-3584
+chrM 13251 0 0 0 0 0 0 0 16-3584
+chrM 13252 0 0 0 0 0 0 0 16-3584
+chrM 13253 0 0 0 0 0 0 0 16-3584
+chrM 13254 0 0 0 0 0 0 0 16-3584
+chrM 13255 0 0 0 0 0 0 0 16-3584
+chrM 13256 0 0 0 0 0 0 0 16-3584
+chrM 13257 0 0 0 0 0 0 0 16-3584
+chrM 13258 0 0 0 0 0 0 0 16-3584
+chrM 13259 0 0 0 0 0 0 0 16-3584
+chrM 13260 0 0 0 0 0 0 0 16-3584
+chrM 13261 0 0 0 0 0 0 0 16-3584
+chrM 13262 0 0 0 0 0 0 0 16-3584
+chrM 13263 0 0 0 0 0 0 0 16-3584
+chrM 13264 0 0 0 0 0 0 0 16-3584
+chrM 13265 0 0 0 0 0 0 0 16-3584
+chrM 13266 0 0 0 0 0 0 0 16-3584
+chrM 13267 0 0 0 0 0 0 0 16-3584
+chrM 13268 0 0 0 0 0 0 0 16-3584
+chrM 13269 0 0 0 0 0 0 0 16-3584
+chrM 13270 0 0 0 0 0 0 0 16-3584
+chrM 13271 0 0 0 0 0 0 0 16-3584
+chrM 13272 0 0 0 0 0 0 0 16-3584
+chrM 13273 0 0 0 0 0 0 0 16-3584
+chrM 13274 0 0 0 0 0 0 0 16-3584
+chrM 13275 0 0 0 0 0 0 0 16-3584
+chrM 13276 0 0 0 0 0 0 0 16-3584
+chrM 13277 0 0 0 0 0 0 0 16-3584
+chrM 13278 0 0 0 0 0 0 0 16-3584
+chrM 13279 0 0 0 0 0 0 0 16-3584
+chrM 13280 0 0 0 0 0 0 0 16-3584
+chrM 13281 0 0 0 0 0 0 0 16-3584
+chrM 13282 0 0 0 0 0 0 0 16-3584
+chrM 13283 0 0 0 0 0 0 0 16-3584
+chrM 13284 0 0 0 0 0 0 0 16-3584
+chrM 13285 0 0 0 0 0 0 0 16-3584
+chrM 13286 0 0 0 0 0 0 0 16-3584
+chrM 13287 0 0 0 0 0 0 0 16-3584
+chrM 13288 0 0 0 0 0 0 0 16-3584
+chrM 13289 0 0 0 0 0 0 0 16-3584
+chrM 13290 0 0 0 0 0 0 0 16-3584
+chrM 13291 0 0 0 0 0 0 0 16-3584
+chrM 13292 0 0 0 0 0 0 0 16-3584
+chrM 13293 0 0 0 0 0 0 0 16-3584
+chrM 13294 0 0 0 0 0 0 0 16-3584
+chrM 13295 0 0 0 0 0 0 0 16-3584
+chrM 13296 0 0 0 0 0 0 0 16-3584
+chrM 13297 0 0 0 0 0 0 0 16-3584
+chrM 13298 0 0 0 0 0 0 0 16-3584
+chrM 13299 0 0 0 0 0 0 0 16-3584
+chrM 13300 0 0 0 0 0 0 0 16-3584
+chrM 13301 0 0 0 0 0 0 0 16-3584
+chrM 13302 0 0 0 0 0 0 0 16-3584
+chrM 13303 0 0 0 0 0 0 0 16-3584
+chrM 13304 0 0 0 0 0 0 0 16-3584
+chrM 13305 0 0 0 0 0 0 0 16-3584
+chrM 13306 0 0 0 0 0 0 0 16-3584
+chrM 13307 0 0 0 0 0 0 0 16-3584
+chrM 13308 0 0 0 0 0 0 0 16-3584
+chrM 13309 0 0 0 0 0 0 0 16-3584
+chrM 13310 0 0 0 0 0 0 0 16-3584
+chrM 13311 0 0 0 0 0 0 0 16-3584
+chrM 13312 0 0 0 0 0 0 0 16-3584
+chrM 13313 0 0 0 0 0 0 0 16-3584
+chrM 13314 0 0 0 0 0 0 0 16-3584
+chrM 13315 0 0 0 0 0 0 0 16-3584
+chrM 13316 0 0 0 0 0 0 0 16-3584
+chrM 13317 0 0 0 0 0 0 0 16-3584
+chrM 13318 0 0 0 0 0 0 0 16-3584
+chrM 13319 0 0 0 0 0 0 0 16-3584
+chrM 13320 0 0 0 0 0 0 0 16-3584
+chrM 13321 0 0 0 0 0 0 0 16-3584
+chrM 13322 0 0 0 0 0 0 0 16-3584
+chrM 13323 0 0 0 0 0 0 0 16-3584
+chrM 13324 0 0 0 0 0 0 0 16-3584
+chrM 13325 0 0 0 0 0 0 0 16-3584
+chrM 13326 0 0 0 0 0 0 0 16-3584
+chrM 13327 0 0 0 0 0 0 0 16-3584
+chrM 13328 0 0 0 0 0 0 0 16-3584
+chrM 13329 0 0 0 0 0 0 0 16-3584
+chrM 13330 0 0 0 0 0 0 0 16-3584
+chrM 13331 0 0 0 0 0 0 0 16-3584
+chrM 13332 0 0 0 0 0 0 0 16-3584
+chrM 13333 0 0 0 0 0 0 0 16-3584
+chrM 13334 0 0 0 0 0 0 0 16-3584
+chrM 13335 0 0 0 0 0 0 0 16-3584
+chrM 13336 0 0 0 0 0 0 0 16-3584
+chrM 13337 0 0 0 0 0 0 0 16-3584
+chrM 13338 0 0 0 0 0 0 0 16-3584
+chrM 13339 0 0 0 0 0 0 0 16-3584
+chrM 13340 0 0 0 0 0 0 0 16-3584
+chrM 13341 0 0 0 0 0 0 0 16-3584
+chrM 13342 0 0 0 0 0 0 0 16-3584
+chrM 13343 0 0 0 0 0 0 0 16-3584
+chrM 13344 0 0 0 0 0 0 0 16-3584
+chrM 13345 0 0 0 0 0 0 0 16-3584
+chrM 13346 0 0 0 0 0 0 0 16-3584
+chrM 13347 0 0 0 0 0 0 0 16-3584
+chrM 13348 0 0 0 0 0 0 0 16-3584
+chrM 13349 0 0 0 0 0 0 0 16-3584
+chrM 13350 0 0 0 0 0 0 0 16-3584
+chrM 13351 0 0 0 0 0 0 0 16-3584
+chrM 13352 0 0 0 0 0 0 0 16-3584
+chrM 13353 0 0 0 0 0 0 0 16-3584
+chrM 13354 0 0 0 0 0 0 0 16-3584
+chrM 13355 0 0 0 0 0 0 0 16-3584
+chrM 13356 0 0 0 0 0 0 0 16-3584
+chrM 13357 0 0 0 0 0 0 0 16-3584
+chrM 13358 0 0 0 0 0 0 0 16-3584
+chrM 13359 0 0 0 0 0 0 0 16-3584
+chrM 13360 0 0 0 0 0 0 0 16-3584
+chrM 13361 0 0 0 0 0 0 0 16-3584
+chrM 13362 0 0 0 0 0 0 0 16-3584
+chrM 13363 0 0 0 0 0 0 0 16-3584
+chrM 13364 0 0 0 0 0 0 0 16-3584
+chrM 13365 1 1 0 0 0 0 0 16-3584
+chrM 13366 1 0 0 0 1 0 0 16-3584
+chrM 13367 1 0 1 0 0 0 0 16-3584
+chrM 13368 1 1 0 0 0 0 0 16-3584
+chrM 13369 1 0 0 0 1 0 0 16-3584
+chrM 13370 1 1 0 0 0 0 0 16-3584
+chrM 13371 1 0 0 1 0 0 0 16-3584
+chrM 13372 1 0 0 0 1 0 0 16-3584
+chrM 13373 1 0 0 0 1 0 0 16-3584
+chrM 13374 1 0 1 0 0 0 0 16-3584
+chrM 13375 1 1 0 0 0 0 0 16-3584
+chrM 13376 1 0 0 1 0 0 0 16-3584
+chrM 13377 1 0 0 0 1 0 0 16-3584
+chrM 13378 1 1 0 0 0 0 0 16-3584
+chrM 13379 1 0 1 0 0 0 0 16-3584
+chrM 13380 1 0 0 1 0 0 0 16-3584
+chrM 13381 1 1 0 0 0 0 0 16-3584
+chrM 13382 1 1 0 0 0 0 0 16-3584
+chrM 13383 1 0 0 0 1 0 0 16-3584
+chrM 13384 1 1 0 0 0 0 0 16-3584
+chrM 13385 1 1 0 0 0 0 0 16-3584
+chrM 13386 1 0 0 1 0 0 0 16-3584
+chrM 13387 1 1 0 0 0 0 0 16-3584
+chrM 13388 1 0 1 0 0 0 0 16-3584
+chrM 13389 1 1 0 0 0 0 0 16-3584
+chrM 13390 1 1 0 0 0 0 0 16-3584
+chrM 13391 1 0 1 0 0 0 0 16-3584
+chrM 13392 1 1 0 0 0 0 0 16-3584
+chrM 13393 1 0 1 0 0 0 0 16-3584
+chrM 13394 1 0 0 0 1 0 0 16-3584
+chrM 13395 1 1 0 0 0 0 0 16-3584
+chrM 13396 1 1 0 0 0 0 0 16-3584
+chrM 13397 1 0 0 0 1 0 0 16-3584
+chrM 13398 1 1 0 0 0 0 0 16-3584
+chrM 13399 1 0 0 0 1 0 0 16-3584
+chrM 13400 1 0 1 0 0 0 0 16-3584
+chrM 13401 1 1 0 0 0 0 0 16-3584
+chrM 13402 1 0 0 1 0 0 0 16-3584
+chrM 13403 1 0 0 1 0 0 0 16-3584
+chrM 13404 1 1 0 0 0 0 0 16-3584
+chrM 13405 1 0 0 1 0 0 0 16-3584
+chrM 13406 2 1 0 1 0 0 0 16-3584
+chrM 13407 2 1 0 0 1 0 0 16-3584
+chrM 13408 2 1 0 0 1 0 0 16-3584
+chrM 13409 2 1 0 1 0 0 0 16-3584
+chrM 13410 2 0 1 0 1 0 0 16-3584
+chrM 13411 2 0 1 1 0 0 0 16-3584
+chrM 13412 2 0 0 2 0 0 0 16-3584
+chrM 13413 2 0 1 0 1 0 0 16-3584
+chrM 13414 2 1 0 0 1 0 0 16-3584
+chrM 13415 2 1 0 0 1 0 0 16-3584
+chrM 13416 2 0 0 1 1 0 0 16-3584
+chrM 13417 2 1 0 0 1 0 0 16-3584
+chrM 13418 2 0 0 1 1 0 0 16-3584
+chrM 13419 2 0 1 0 1 0 0 16-3584
+chrM 13420 2 0 1 1 0 0 0 16-3584
+chrM 13421 2 0 1 0 1 0 0 16-3584
+chrM 13422 2 0 0 1 1 0 0 16-3584
+chrM 13423 2 2 0 0 0 0 0 16-3584
+chrM 13424 2 0 1 0 1 0 0 16-3584
+chrM 13425 2 0 0 1 1 0 0 16-3584
+chrM 13426 2 1 0 0 1 0 0 16-3584
+chrM 13427 2 1 0 1 0 0 0 16-3584
+chrM 13428 2 0 1 1 0 0 0 16-3584
+chrM 13429 2 0 0 2 0 0 0 16-3584
+chrM 13430 2 0 0 1 1 0 0 16-3584
+chrM 13431 2 0 1 1 0 0 0 16-3584
+chrM 13432 2 0 1 1 0 0 0 16-3584
+chrM 13433 2 0 1 1 0 0 0 16-3584
+chrM 13434 2 1 1 0 0 0 0 16-3584
+chrM 13435 2 1 0 1 0 0 0 16-3584
+chrM 13436 2 1 0 1 0 0 0 16-3584
+chrM 13437 2 0 1 0 1 0 0 16-3584
+chrM 13438 2 0 1 0 1 0 0 16-3584
+chrM 13439 2 1 1 0 0 0 0 16-3584
+chrM 13440 2 1 0 1 0 0 0 16-3584
+chrM 13441 2 0 1 1 0 0 0 16-3584
+chrM 13442 2 1 0 0 1 0 0 16-3584
+chrM 13443 2 0 0 0 2 0 0 16-3584
+chrM 13444 2 0 1 0 1 0 0 16-3584
+chrM 13445 2 1 0 0 1 0 0 16-3584
+chrM 13446 2 0 0 0 2 0 0 16-3584
+chrM 13447 2 1 0 0 1 0 0 16-3584
+chrM 13448 2 0 0 0 2 0 0 16-3584
+chrM 13449 2 0 2 0 0 0 0 16-3584
+chrM 13450 2 2 0 0 0 0 0 16-3584
+chrM 13451 2 1 0 1 0 0 0 16-3584
+chrM 13452 2 0 1 0 1 0 0 16-3584
+chrM 13453 2 1 0 0 1 0 0 16-3584
+chrM 13454 2 2 0 0 0 0 0 16-3584
+chrM 13455 2 0 1 0 1 0 0 16-3584
+chrM 13456 2 0 2 0 0 0 0 16-3584
+chrM 13457 2 0 1 0 1 0 0 16-3584
+chrM 13458 2 1 1 0 0 0 0 16-3584
+chrM 13459 2 1 0 0 1 0 0 16-3584
+chrM 13460 2 0 0 0 2 0 0 16-3584
+chrM 13461 2 1 0 0 1 0 0 16-3584
+chrM 13462 2 1 1 0 0 0 0 16-3584
+chrM 13463 2 1 0 1 0 0 0 16-3584
+chrM 13464 2 0 1 1 0 0 0 16-3584
+chrM 13465 2 1 0 0 1 0 0 16-3584
+chrM 13466 2 0 0 2 0 0 0 16-3584
+chrM 13467 2 0 1 1 0 0 0 16-3584
+chrM 13468 2 0 2 0 0 0 0 16-3584
+chrM 13469 2 1 1 0 0 0 0 16-3584
+chrM 13470 2 0 0 0 2 0 0 16-3584
+chrM 13471 2 1 1 0 0 0 0 16-3584
+chrM 13472 2 0 1 0 1 0 0 16-3584
+chrM 13473 2 1 0 1 0 0 0 16-3584
+chrM 13474 2 1 0 0 1 0 0 16-3584
+chrM 13475 2 0 0 0 2 0 0 16-3584
+chrM 13476 2 0 1 1 0 0 0 16-3584
+chrM 13477 2 1 1 0 0 0 0 16-3584
+chrM 13478 2 0 1 0 1 0 0 16-3584
+chrM 13479 2 0 1 1 0 0 0 16-3584
+chrM 13480 2 0 1 1 0 0 0 16-3584
+chrM 13481 2 2 0 0 0 0 0 16-3584
+chrM 13482 2 1 0 1 0 0 0 16-3584
+chrM 13483 2 1 1 0 0 0 0 16-3584
+chrM 13484 2 0 1 0 1 0 0 16-3584
+chrM 13485 2 1 0 0 1 0 0 16-3584
+chrM 13486 2 0 0 0 2 0 0 16-3584
+chrM 13487 2 2 0 0 0 0 0 16-3584
+chrM 13488 2 1 1 0 0 0 0 16-3584
+chrM 13489 2 0 1 1 0 0 0 16-3584
+chrM 13490 2 2 0 0 0 0 0 16-3584
+chrM 13491 2 0 1 0 1 0 0 16-3584
+chrM 13492 2 0 2 0 0 0 0 16-3584
+chrM 13493 2 1 0 0 1 0 0 16-3584
+chrM 13494 2 0 0 0 2 0 0 16-3584
+chrM 13495 2 1 1 0 0 0 0 16-3584
+chrM 13496 2 1 1 0 0 0 0 16-3584
+chrM 13497 2 1 0 1 0 0 0 16-3584
+chrM 13498 2 1 1 0 0 0 0 16-3584
+chrM 13499 2 0 2 0 0 0 0 16-3584
+chrM 13500 2 0 0 0 2 0 0 16-3584
+chrM 13501 2 1 0 1 0 0 0 16-3584
+chrM 13502 2 1 1 0 0 0 0 16-3584
+chrM 13503 2 0 1 1 0 0 0 16-3584
+chrM 13504 2 0 1 1 0 0 0 16-3584
+chrM 13505 2 2 0 0 0 0 0 16-3584
+chrM 13506 2 1 0 1 0 0 0 16-3584
+chrM 13507 2 0 1 0 1 0 0 16-3584
+chrM 13508 2 1 0 1 0 0 0 16-3584
+chrM 13509 2 0 0 0 2 0 0 16-3584
+chrM 13510 1 0 0 1 0 0 0 16-3584
+chrM 13511 1 0 0 0 1 0 0 16-3584
+chrM 13512 1 0 0 0 1 0 0 16-3584
+chrM 13513 1 0 0 0 1 0 0 16-3584
+chrM 13514 1 1 0 0 0 0 0 16-3584
+chrM 13515 1 0 0 0 1 0 0 16-3584
+chrM 13516 1 1 0 0 0 0 0 16-3584
+chrM 13517 1 0 0 1 0 0 0 16-3584
+chrM 13518 1 0 0 1 0 0 0 16-3584
+chrM 13519 1 1 0 0 0 0 0 16-3584
+chrM 13520 1 0 0 1 0 0 0 16-3584
+chrM 13521 1 0 0 1 0 0 0 16-3584
+chrM 13522 1 0 0 1 0 0 0 16-3584
+chrM 13523 1 0 0 1 0 0 0 16-3584
+chrM 13524 1 0 0 1 0 0 0 16-3584
+chrM 13525 1 0 0 1 0 0 0 16-3584
+chrM 13526 1 0 0 1 0 0 0 16-3584
+chrM 13527 1 0 1 0 0 0 0 16-3584
+chrM 13528 1 0 0 1 0 0 0 16-3584
+chrM 13529 1 0 0 1 0 0 0 16-3584
+chrM 13530 1 0 1 0 0 0 0 16-3584
+chrM 13531 1 1 0 0 0 0 0 16-3584
+chrM 13532 1 1 0 0 0 0 0 16-3584
+chrM 13533 1 1 0 0 0 0 0 16-3584
+chrM 13534 1 0 0 1 0 0 0 16-3584
+chrM 13535 1 1 0 0 0 0 0 16-3584
+chrM 13536 1 0 0 0 1 0 0 16-3584
+chrM 13537 1 0 0 1 0 0 0 16-3584
+chrM 13538 1 0 0 1 0 0 0 16-3584
+chrM 13539 1 0 1 0 0 0 0 16-3584
+chrM 13540 1 0 0 0 1 0 0 16-3584
+chrM 13541 1 0 0 1 0 0 0 16-3584
+chrM 13542 1 0 0 1 0 0 0 16-3584
+chrM 13543 1 1 0 0 0 0 0 16-3584
+chrM 13544 1 0 0 1 0 0 0 16-3584
+chrM 13545 1 0 0 0 1 0 0 16-3584
+chrM 13546 1 0 0 1 0 0 0 16-3584
+chrM 13547 1 0 1 0 0 0 0 16-3584
+chrM 13548 1 1 0 0 0 0 0 16-3584
+chrM 13549 1 0 0 0 1 0 0 16-3584
+chrM 13550 1 0 0 0 1 0 0 16-3584
+chrM 13551 1 1 0 0 0 0 0 16-3584
+chrM 13552 0 0 0 0 0 0 0 16-3584
+chrM 13553 0 0 0 0 0 0 0 16-3584
+chrM 13554 0 0 0 0 0 0 0 16-3584
+chrM 13555 0 0 0 0 0 0 0 16-3584
+chrM 13556 0 0 0 0 0 0 0 16-3584
+chrM 13557 0 0 0 0 0 0 0 16-3584
+chrM 13558 0 0 0 0 0 0 0 16-3584
+chrM 13559 0 0 0 0 0 0 0 16-3584
+chrM 13560 0 0 0 0 0 0 0 16-3584
+chrM 13561 0 0 0 0 0 0 0 16-3584
+chrM 13562 0 0 0 0 0 0 0 16-3584
+chrM 13563 0 0 0 0 0 0 0 16-3584
+chrM 13564 0 0 0 0 0 0 0 16-3584
+chrM 13565 0 0 0 0 0 0 0 16-3584
+chrM 13566 0 0 0 0 0 0 0 16-3584
+chrM 13567 0 0 0 0 0 0 0 16-3584
+chrM 13568 0 0 0 0 0 0 0 16-3584
+chrM 13569 0 0 0 0 0 0 0 16-3584
+chrM 13570 0 0 0 0 0 0 0 16-3584
+chrM 13571 0 0 0 0 0 0 0 16-3584
+chrM 13572 0 0 0 0 0 0 0 16-3584
+chrM 13573 0 0 0 0 0 0 0 16-3584
+chrM 13574 0 0 0 0 0 0 0 16-3584
+chrM 13575 0 0 0 0 0 0 0 16-3584
+chrM 13576 0 0 0 0 0 0 0 16-3584
+chrM 13577 0 0 0 0 0 0 0 16-3584
+chrM 13578 0 0 0 0 0 0 0 16-3584
+chrM 13579 0 0 0 0 0 0 0 16-3584
+chrM 13580 0 0 0 0 0 0 0 16-3584
+chrM 13581 0 0 0 0 0 0 0 16-3584
+chrM 13582 0 0 0 0 0 0 0 16-3584
+chrM 13583 0 0 0 0 0 0 0 16-3584
+chrM 13584 0 0 0 0 0 0 0 16-3584
+chrM 13585 0 0 0 0 0 0 0 16-3584
+chrM 13586 0 0 0 0 0 0 0 16-3584
+chrM 13587 0 0 0 0 0 0 0 16-3584
+chrM 13588 0 0 0 0 0 0 0 16-3584
+chrM 13589 0 0 0 0 0 0 0 16-3584
+chrM 13590 0 0 0 0 0 0 0 16-3584
+chrM 13591 0 0 0 0 0 0 0 16-3584
+chrM 13592 0 0 0 0 0 0 0 16-3584
+chrM 13593 0 0 0 0 0 0 0 16-3584
+chrM 13594 0 0 0 0 0 0 0 16-3584
+chrM 13595 0 0 0 0 0 0 0 16-3584
+chrM 13596 0 0 0 0 0 0 0 16-3584
+chrM 13597 0 0 0 0 0 0 0 16-3584
+chrM 13598 0 0 0 0 0 0 0 16-3584
+chrM 13599 0 0 0 0 0 0 0 16-3584
+chrM 13600 0 0 0 0 0 0 0 16-3584
+chrM 13601 0 0 0 0 0 0 0 16-3584
+chrM 13602 0 0 0 0 0 0 0 16-3584
+chrM 13603 0 0 0 0 0 0 0 16-3584
+chrM 13604 0 0 0 0 0 0 0 16-3584
+chrM 13605 0 0 0 0 0 0 0 16-3584
+chrM 13606 0 0 0 0 0 0 0 16-3584
+chrM 13607 0 0 0 0 0 0 0 16-3584
+chrM 13608 0 0 0 0 0 0 0 16-3584
+chrM 13609 0 0 0 0 0 0 0 16-3584
+chrM 13610 0 0 0 0 0 0 0 16-3584
+chrM 13611 0 0 0 0 0 0 0 16-3584
+chrM 13612 0 0 0 0 0 0 0 16-3584
+chrM 13613 0 0 0 0 0 0 0 16-3584
+chrM 13614 0 0 0 0 0 0 0 16-3584
+chrM 13615 0 0 0 0 0 0 0 16-3584
+chrM 13616 0 0 0 0 0 0 0 16-3584
+chrM 13617 0 0 0 0 0 0 0 16-3584
+chrM 13618 0 0 0 0 0 0 0 16-3584
+chrM 13619 0 0 0 0 0 0 0 16-3584
+chrM 13620 0 0 0 0 0 0 0 16-3584
+chrM 13621 0 0 0 0 0 0 0 16-3584
+chrM 13622 0 0 0 0 0 0 0 16-3584
+chrM 13623 0 0 0 0 0 0 0 16-3584
+chrM 13624 0 0 0 0 0 0 0 16-3584
+chrM 13625 0 0 0 0 0 0 0 16-3584
+chrM 13626 0 0 0 0 0 0 0 16-3584
+chrM 13627 0 0 0 0 0 0 0 16-3584
+chrM 13628 0 0 0 0 0 0 0 16-3584
+chrM 13629 0 0 0 0 0 0 0 16-3584
+chrM 13630 0 0 0 0 0 0 0 16-3584
+chrM 13631 0 0 0 0 0 0 0 16-3584
+chrM 13632 0 0 0 0 0 0 0 16-3584
+chrM 13633 0 0 0 0 0 0 0 16-3584
+chrM 13634 0 0 0 0 0 0 0 16-3584
+chrM 13635 0 0 0 0 0 0 0 16-3584
+chrM 13636 0 0 0 0 0 0 0 16-3584
+chrM 13637 0 0 0 0 0 0 0 16-3584
+chrM 13638 0 0 0 0 0 0 0 16-3584
+chrM 13639 0 0 0 0 0 0 0 16-3584
+chrM 13640 0 0 0 0 0 0 0 16-3584
+chrM 13641 0 0 0 0 0 0 0 16-3584
+chrM 13642 0 0 0 0 0 0 0 16-3584
+chrM 13643 0 0 0 0 0 0 0 16-3584
+chrM 13644 0 0 0 0 0 0 0 16-3584
+chrM 13645 0 0 0 0 0 0 0 16-3584
+chrM 13646 0 0 0 0 0 0 0 16-3584
+chrM 13647 0 0 0 0 0 0 0 16-3584
+chrM 13648 0 0 0 0 0 0 0 16-3584
+chrM 13649 0 0 0 0 0 0 0 16-3584
+chrM 13650 0 0 0 0 0 0 0 16-3584
+chrM 13651 0 0 0 0 0 0 0 16-3584
+chrM 13652 0 0 0 0 0 0 0 16-3584
+chrM 13653 0 0 0 0 0 0 0 16-3584
+chrM 13654 0 0 0 0 0 0 0 16-3584
+chrM 13655 0 0 0 0 0 0 0 16-3584
+chrM 13656 0 0 0 0 0 0 0 16-3584
+chrM 13657 0 0 0 0 0 0 0 16-3584
+chrM 13658 0 0 0 0 0 0 0 16-3584
+chrM 13659 0 0 0 0 0 0 0 16-3584
+chrM 13660 0 0 0 0 0 0 0 16-3584
+chrM 13661 0 0 0 0 0 0 0 16-3584
+chrM 13662 0 0 0 0 0 0 0 16-3584
+chrM 13663 0 0 0 0 0 0 0 16-3584
+chrM 13664 0 0 0 0 0 0 0 16-3584
+chrM 13665 0 0 0 0 0 0 0 16-3584
+chrM 13666 0 0 0 0 0 0 0 16-3584
+chrM 13667 0 0 0 0 0 0 0 16-3584
+chrM 13668 0 0 0 0 0 0 0 16-3584
+chrM 13669 0 0 0 0 0 0 0 16-3584
+chrM 13670 0 0 0 0 0 0 0 16-3584
+chrM 13671 0 0 0 0 0 0 0 16-3584
+chrM 13672 0 0 0 0 0 0 0 16-3584
+chrM 13673 0 0 0 0 0 0 0 16-3584
+chrM 13674 0 0 0 0 0 0 0 16-3584
+chrM 13675 0 0 0 0 0 0 0 16-3584
+chrM 13676 0 0 0 0 0 0 0 16-3584
+chrM 13677 0 0 0 0 0 0 0 16-3584
+chrM 13678 0 0 0 0 0 0 0 16-3584
+chrM 13679 0 0 0 0 0 0 0 16-3584
+chrM 13680 0 0 0 0 0 0 0 16-3584
+chrM 13681 0 0 0 0 0 0 0 16-3584
+chrM 13682 0 0 0 0 0 0 0 16-3584
+chrM 13683 0 0 0 0 0 0 0 16-3584
+chrM 13684 0 0 0 0 0 0 0 16-3584
+chrM 13685 0 0 0 0 0 0 0 16-3584
+chrM 13686 0 0 0 0 0 0 0 16-3584
+chrM 13687 0 0 0 0 0 0 0 16-3584
+chrM 13688 0 0 0 0 0 0 0 16-3584
+chrM 13689 0 0 0 0 0 0 0 16-3584
+chrM 13690 0 0 0 0 0 0 0 16-3584
+chrM 13691 0 0 0 0 0 0 0 16-3584
+chrM 13692 0 0 0 0 0 0 0 16-3584
+chrM 13693 0 0 0 0 0 0 0 16-3584
+chrM 13694 0 0 0 0 0 0 0 16-3584
+chrM 13695 0 0 0 0 0 0 0 16-3584
+chrM 13696 0 0 0 0 0 0 0 16-3584
+chrM 13697 0 0 0 0 0 0 0 16-3584
+chrM 13698 0 0 0 0 0 0 0 16-3584
+chrM 13699 0 0 0 0 0 0 0 16-3584
+chrM 13700 0 0 0 0 0 0 0 16-3584
+chrM 13701 0 0 0 0 0 0 0 16-3584
+chrM 13702 0 0 0 0 0 0 0 16-3584
+chrM 13703 0 0 0 0 0 0 0 16-3584
+chrM 13704 0 0 0 0 0 0 0 16-3584
+chrM 13705 0 0 0 0 0 0 0 16-3584
+chrM 13706 0 0 0 0 0 0 0 16-3584
+chrM 13707 0 0 0 0 0 0 0 16-3584
+chrM 13708 0 0 0 0 0 0 0 16-3584
+chrM 13709 0 0 0 0 0 0 0 16-3584
+chrM 13710 0 0 0 0 0 0 0 16-3584
+chrM 13711 0 0 0 0 0 0 0 16-3584
+chrM 13712 0 0 0 0 0 0 0 16-3584
+chrM 13713 0 0 0 0 0 0 0 16-3584
+chrM 13714 0 0 0 0 0 0 0 16-3584
+chrM 13715 0 0 0 0 0 0 0 16-3584
+chrM 13716 0 0 0 0 0 0 0 16-3584
+chrM 13717 0 0 0 0 0 0 0 16-3584
+chrM 13718 0 0 0 0 0 0 0 16-3584
+chrM 13719 0 0 0 0 0 0 0 16-3584
+chrM 13720 0 0 0 0 0 0 0 16-3584
+chrM 13721 0 0 0 0 0 0 0 16-3584
+chrM 13722 0 0 0 0 0 0 0 16-3584
+chrM 13723 0 0 0 0 0 0 0 16-3584
+chrM 13724 0 0 0 0 0 0 0 16-3584
+chrM 13725 0 0 0 0 0 0 0 16-3584
+chrM 13726 0 0 0 0 0 0 0 16-3584
+chrM 13727 0 0 0 0 0 0 0 16-3584
+chrM 13728 0 0 0 0 0 0 0 16-3584
+chrM 13729 0 0 0 0 0 0 0 16-3584
+chrM 13730 0 0 0 0 0 0 0 16-3584
+chrM 13731 0 0 0 0 0 0 0 16-3584
+chrM 13732 0 0 0 0 0 0 0 16-3584
+chrM 13733 0 0 0 0 0 0 0 16-3584
+chrM 13734 0 0 0 0 0 0 0 16-3584
+chrM 13735 0 0 0 0 0 0 0 16-3584
+chrM 13736 0 0 0 0 0 0 0 16-3584
+chrM 13737 0 0 0 0 0 0 0 16-3584
+chrM 13738 0 0 0 0 0 0 0 16-3584
+chrM 13739 0 0 0 0 0 0 0 16-3584
+chrM 13740 0 0 0 0 0 0 0 16-3584
+chrM 13741 0 0 0 0 0 0 0 16-3584
+chrM 13742 0 0 0 0 0 0 0 16-3584
+chrM 13743 0 0 0 0 0 0 0 16-3584
+chrM 13744 0 0 0 0 0 0 0 16-3584
+chrM 13745 0 0 0 0 0 0 0 16-3584
+chrM 13746 0 0 0 0 0 0 0 16-3584
+chrM 13747 0 0 0 0 0 0 0 16-3584
+chrM 13748 0 0 0 0 0 0 0 16-3584
+chrM 13749 0 0 0 0 0 0 0 16-3584
+chrM 13750 0 0 0 0 0 0 0 16-3584
+chrM 13751 0 0 0 0 0 0 0 16-3584
+chrM 13752 0 0 0 0 0 0 0 16-3584
+chrM 13753 0 0 0 0 0 0 0 16-3584
+chrM 13754 0 0 0 0 0 0 0 16-3584
+chrM 13755 0 0 0 0 0 0 0 16-3584
+chrM 13756 0 0 0 0 0 0 0 16-3584
+chrM 13757 0 0 0 0 0 0 0 16-3584
+chrM 13758 0 0 0 0 0 0 0 16-3584
+chrM 13759 0 0 0 0 0 0 0 16-3584
+chrM 13760 0 0 0 0 0 0 0 16-3584
+chrM 13761 0 0 0 0 0 0 0 16-3584
+chrM 13762 0 0 0 0 0 0 0 16-3584
+chrM 13763 0 0 0 0 0 0 0 16-3584
+chrM 13764 0 0 0 0 0 0 0 16-3584
+chrM 13765 0 0 0 0 0 0 0 16-3584
+chrM 13766 0 0 0 0 0 0 0 16-3584
+chrM 13767 0 0 0 0 0 0 0 16-3584
+chrM 13768 0 0 0 0 0 0 0 16-3584
+chrM 13769 0 0 0 0 0 0 0 16-3584
+chrM 13770 0 0 0 0 0 0 0 16-3584
+chrM 13771 0 0 0 0 0 0 0 16-3584
+chrM 13772 0 0 0 0 0 0 0 16-3584
+chrM 13773 0 0 0 0 0 0 0 16-3584
+chrM 13774 0 0 0 0 0 0 0 16-3584
+chrM 13775 0 0 0 0 0 0 0 16-3584
+chrM 13776 0 0 0 0 0 0 0 16-3584
+chrM 13777 0 0 0 0 0 0 0 16-3584
+chrM 13778 0 0 0 0 0 0 0 16-3584
+chrM 13779 0 0 0 0 0 0 0 16-3584
+chrM 13780 0 0 0 0 0 0 0 16-3584
+chrM 13781 0 0 0 0 0 0 0 16-3584
+chrM 13782 0 0 0 0 0 0 0 16-3584
+chrM 13783 0 0 0 0 0 0 0 16-3584
+chrM 13784 0 0 0 0 0 0 0 16-3584
+chrM 13785 0 0 0 0 0 0 0 16-3584
+chrM 13786 0 0 0 0 0 0 0 16-3584
+chrM 13787 0 0 0 0 0 0 0 16-3584
+chrM 13788 0 0 0 0 0 0 0 16-3584
+chrM 13789 0 0 0 0 0 0 0 16-3584
+chrM 13790 0 0 0 0 0 0 0 16-3584
+chrM 13791 0 0 0 0 0 0 0 16-3584
+chrM 13792 0 0 0 0 0 0 0 16-3584
+chrM 13793 0 0 0 0 0 0 0 16-3584
+chrM 13794 0 0 0 0 0 0 0 16-3584
+chrM 13795 0 0 0 0 0 0 0 16-3584
+chrM 13796 0 0 0 0 0 0 0 16-3584
+chrM 13797 0 0 0 0 0 0 0 16-3584
+chrM 13798 0 0 0 0 0 0 0 16-3584
+chrM 13799 0 0 0 0 0 0 0 16-3584
+chrM 13800 0 0 0 0 0 0 0 16-3584
+chrM 13801 0 0 0 0 0 0 0 16-3584
+chrM 13802 0 0 0 0 0 0 0 16-3584
+chrM 13803 0 0 0 0 0 0 0 16-3584
+chrM 13804 0 0 0 0 0 0 0 16-3584
+chrM 13805 0 0 0 0 0 0 0 16-3584
+chrM 13806 0 0 0 0 0 0 0 16-3584
+chrM 13807 0 0 0 0 0 0 0 16-3584
+chrM 13808 0 0 0 0 0 0 0 16-3584
+chrM 13809 0 0 0 0 0 0 0 16-3584
+chrM 13810 0 0 0 0 0 0 0 16-3584
+chrM 13811 0 0 0 0 0 0 0 16-3584
+chrM 13812 0 0 0 0 0 0 0 16-3584
+chrM 13813 0 0 0 0 0 0 0 16-3584
+chrM 13814 0 0 0 0 0 0 0 16-3584
+chrM 13815 0 0 0 0 0 0 0 16-3584
+chrM 13816 0 0 0 0 0 0 0 16-3584
+chrM 13817 0 0 0 0 0 0 0 16-3584
+chrM 13818 0 0 0 0 0 0 0 16-3584
+chrM 13819 0 0 0 0 0 0 0 16-3584
+chrM 13820 0 0 0 0 0 0 0 16-3584
+chrM 13821 0 0 0 0 0 0 0 16-3584
+chrM 13822 0 0 0 0 0 0 0 16-3584
+chrM 13823 0 0 0 0 0 0 0 16-3584
+chrM 13824 0 0 0 0 0 0 0 16-3584
+chrM 13825 0 0 0 0 0 0 0 16-3584
+chrM 13826 0 0 0 0 0 0 0 16-3584
+chrM 13827 0 0 0 0 0 0 0 16-3584
+chrM 13828 0 0 0 0 0 0 0 16-3584
+chrM 13829 0 0 0 0 0 0 0 16-3584
+chrM 13830 0 0 0 0 0 0 0 16-3584
+chrM 13831 0 0 0 0 0 0 0 16-3584
+chrM 13832 0 0 0 0 0 0 0 16-3584
+chrM 13833 0 0 0 0 0 0 0 16-3584
+chrM 13834 0 0 0 0 0 0 0 16-3584
+chrM 13835 0 0 0 0 0 0 0 16-3584
+chrM 13836 0 0 0 0 0 0 0 16-3584
+chrM 13837 0 0 0 0 0 0 0 16-3584
+chrM 13838 0 0 0 0 0 0 0 16-3584
+chrM 13839 0 0 0 0 0 0 0 16-3584
+chrM 13840 0 0 0 0 0 0 0 16-3584
+chrM 13841 0 0 0 0 0 0 0 16-3584
+chrM 13842 0 0 0 0 0 0 0 16-3584
+chrM 13843 0 0 0 0 0 0 0 16-3584
+chrM 13844 0 0 0 0 0 0 0 16-3584
+chrM 13845 0 0 0 0 0 0 0 16-3584
+chrM 13846 0 0 0 0 0 0 0 16-3584
+chrM 13847 0 0 0 0 0 0 0 16-3584
+chrM 13848 0 0 0 0 0 0 0 16-3584
+chrM 13849 0 0 0 0 0 0 0 16-3584
+chrM 13850 0 0 0 0 0 0 0 16-3584
+chrM 13851 0 0 0 0 0 0 0 16-3584
+chrM 13852 0 0 0 0 0 0 0 16-3584
+chrM 13853 0 0 0 0 0 0 0 16-3584
+chrM 13854 0 0 0 0 0 0 0 16-3584
+chrM 13855 0 0 0 0 0 0 0 16-3584
+chrM 13856 0 0 0 0 0 0 0 16-3584
+chrM 13857 0 0 0 0 0 0 0 16-3584
+chrM 13858 0 0 0 0 0 0 0 16-3584
+chrM 13859 0 0 0 0 0 0 0 16-3584
+chrM 13860 0 0 0 0 0 0 0 16-3584
+chrM 13861 0 0 0 0 0 0 0 16-3584
+chrM 13862 0 0 0 0 0 0 0 16-3584
+chrM 13863 0 0 0 0 0 0 0 16-3584
+chrM 13864 0 0 0 0 0 0 0 16-3584
+chrM 13865 0 0 0 0 0 0 0 16-3584
+chrM 13866 0 0 0 0 0 0 0 16-3584
+chrM 13867 0 0 0 0 0 0 0 16-3584
+chrM 13868 0 0 0 0 0 0 0 16-3584
+chrM 13869 0 0 0 0 0 0 0 16-3584
+chrM 13870 0 0 0 0 0 0 0 16-3584
+chrM 13871 0 0 0 0 0 0 0 16-3584
+chrM 13872 0 0 0 0 0 0 0 16-3584
+chrM 13873 0 0 0 0 0 0 0 16-3584
+chrM 13874 0 0 0 0 0 0 0 16-3584
+chrM 13875 0 0 0 0 0 0 0 16-3584
+chrM 13876 0 0 0 0 0 0 0 16-3584
+chrM 13877 0 0 0 0 0 0 0 16-3584
+chrM 13878 0 0 0 0 0 0 0 16-3584
+chrM 13879 0 0 0 0 0 0 0 16-3584
+chrM 13880 0 0 0 0 0 0 0 16-3584
+chrM 13881 0 0 0 0 0 0 0 16-3584
+chrM 13882 0 0 0 0 0 0 0 16-3584
+chrM 13883 0 0 0 0 0 0 0 16-3584
+chrM 13884 0 0 0 0 0 0 0 16-3584
+chrM 13885 0 0 0 0 0 0 0 16-3584
+chrM 13886 0 0 0 0 0 0 0 16-3584
+chrM 13887 0 0 0 0 0 0 0 16-3584
+chrM 13888 0 0 0 0 0 0 0 16-3584
+chrM 13889 0 0 0 0 0 0 0 16-3584
+chrM 13890 0 0 0 0 0 0 0 16-3584
+chrM 13891 0 0 0 0 0 0 0 16-3584
+chrM 13892 0 0 0 0 0 0 0 16-3584
+chrM 13893 0 0 0 0 0 0 0 16-3584
+chrM 13894 0 0 0 0 0 0 0 16-3584
+chrM 13895 0 0 0 0 0 0 0 16-3584
+chrM 13896 0 0 0 0 0 0 0 16-3584
+chrM 13897 0 0 0 0 0 0 0 16-3584
+chrM 13898 0 0 0 0 0 0 0 16-3584
+chrM 13899 0 0 0 0 0 0 0 16-3584
+chrM 13900 0 0 0 0 0 0 0 16-3584
+chrM 13901 0 0 0 0 0 0 0 16-3584
+chrM 13902 0 0 0 0 0 0 0 16-3584
+chrM 13903 0 0 0 0 0 0 0 16-3584
+chrM 13904 0 0 0 0 0 0 0 16-3584
+chrM 13905 0 0 0 0 0 0 0 16-3584
+chrM 13906 0 0 0 0 0 0 0 16-3584
+chrM 13907 0 0 0 0 0 0 0 16-3584
+chrM 13908 0 0 0 0 0 0 0 16-3584
+chrM 13909 0 0 0 0 0 0 0 16-3584
+chrM 13910 0 0 0 0 0 0 0 16-3584
+chrM 13911 0 0 0 0 0 0 0 16-3584
+chrM 13912 0 0 0 0 0 0 0 16-3584
+chrM 13913 0 0 0 0 0 0 0 16-3584
+chrM 13914 0 0 0 0 0 0 0 16-3584
+chrM 13915 0 0 0 0 0 0 0 16-3584
+chrM 13916 0 0 0 0 0 0 0 16-3584
+chrM 13917 0 0 0 0 0 0 0 16-3584
+chrM 13918 0 0 0 0 0 0 0 16-3584
+chrM 13919 0 0 0 0 0 0 0 16-3584
+chrM 13920 0 0 0 0 0 0 0 16-3584
+chrM 13921 0 0 0 0 0 0 0 16-3584
+chrM 13922 0 0 0 0 0 0 0 16-3584
+chrM 13923 0 0 0 0 0 0 0 16-3584
+chrM 13924 0 0 0 0 0 0 0 16-3584
+chrM 13925 0 0 0 0 0 0 0 16-3584
+chrM 13926 0 0 0 0 0 0 0 16-3584
+chrM 13927 0 0 0 0 0 0 0 16-3584
+chrM 13928 0 0 0 0 0 0 0 16-3584
+chrM 13929 0 0 0 0 0 0 0 16-3584
+chrM 13930 0 0 0 0 0 0 0 16-3584
+chrM 13931 0 0 0 0 0 0 0 16-3584
+chrM 13932 0 0 0 0 0 0 0 16-3584
+chrM 13933 0 0 0 0 0 0 0 16-3584
+chrM 13934 0 0 0 0 0 0 0 16-3584
+chrM 13935 0 0 0 0 0 0 0 16-3584
+chrM 13936 0 0 0 0 0 0 0 16-3584
+chrM 13937 0 0 0 0 0 0 0 16-3584
+chrM 13938 0 0 0 0 0 0 0 16-3584
+chrM 13939 0 0 0 0 0 0 0 16-3584
+chrM 13940 0 0 0 0 0 0 0 16-3584
+chrM 13941 0 0 0 0 0 0 0 16-3584
+chrM 13942 0 0 0 0 0 0 0 16-3584
+chrM 13943 0 0 0 0 0 0 0 16-3584
+chrM 13944 0 0 0 0 0 0 0 16-3584
+chrM 13945 0 0 0 0 0 0 0 16-3584
+chrM 13946 0 0 0 0 0 0 0 16-3584
+chrM 13947 0 0 0 0 0 0 0 16-3584
+chrM 13948 0 0 0 0 0 0 0 16-3584
+chrM 13949 0 0 0 0 0 0 0 16-3584
+chrM 13950 0 0 0 0 0 0 0 16-3584
+chrM 13951 0 0 0 0 0 0 0 16-3584
+chrM 13952 0 0 0 0 0 0 0 16-3584
+chrM 13953 0 0 0 0 0 0 0 16-3584
+chrM 13954 0 0 0 0 0 0 0 16-3584
+chrM 13955 0 0 0 0 0 0 0 16-3584
+chrM 13956 0 0 0 0 0 0 0 16-3584
+chrM 13957 0 0 0 0 0 0 0 16-3584
+chrM 13958 0 0 0 0 0 0 0 16-3584
+chrM 13959 0 0 0 0 0 0 0 16-3584
+chrM 13960 0 0 0 0 0 0 0 16-3584
+chrM 13961 0 0 0 0 0 0 0 16-3584
+chrM 13962 0 0 0 0 0 0 0 16-3584
+chrM 13963 0 0 0 0 0 0 0 16-3584
+chrM 13964 0 0 0 0 0 0 0 16-3584
+chrM 13965 0 0 0 0 0 0 0 16-3584
+chrM 13966 0 0 0 0 0 0 0 16-3584
+chrM 13967 0 0 0 0 0 0 0 16-3584
+chrM 13968 0 0 0 0 0 0 0 16-3584
+chrM 13969 0 0 0 0 0 0 0 16-3584
+chrM 13970 0 0 0 0 0 0 0 16-3584
+chrM 13971 0 0 0 0 0 0 0 16-3584
+chrM 13972 0 0 0 0 0 0 0 16-3584
+chrM 13973 0 0 0 0 0 0 0 16-3584
+chrM 13974 0 0 0 0 0 0 0 16-3584
+chrM 13975 0 0 0 0 0 0 0 16-3584
+chrM 13976 0 0 0 0 0 0 0 16-3584
+chrM 13977 0 0 0 0 0 0 0 16-3584
+chrM 13978 0 0 0 0 0 0 0 16-3584
+chrM 13979 0 0 0 0 0 0 0 16-3584
+chrM 13980 0 0 0 0 0 0 0 16-3584
+chrM 13981 0 0 0 0 0 0 0 16-3584
+chrM 13982 0 0 0 0 0 0 0 16-3584
+chrM 13983 0 0 0 0 0 0 0 16-3584
+chrM 13984 0 0 0 0 0 0 0 16-3584
+chrM 13985 0 0 0 0 0 0 0 16-3584
+chrM 13986 0 0 0 0 0 0 0 16-3584
+chrM 13987 0 0 0 0 0 0 0 16-3584
+chrM 13988 0 0 0 0 0 0 0 16-3584
+chrM 13989 0 0 0 0 0 0 0 16-3584
+chrM 13990 0 0 0 0 0 0 0 16-3584
+chrM 13991 0 0 0 0 0 0 0 16-3584
+chrM 13992 0 0 0 0 0 0 0 16-3584
+chrM 13993 0 0 0 0 0 0 0 16-3584
+chrM 13994 0 0 0 0 0 0 0 16-3584
+chrM 13995 0 0 0 0 0 0 0 16-3584
+chrM 13996 0 0 0 0 0 0 0 16-3584
+chrM 13997 0 0 0 0 0 0 0 16-3584
+chrM 13998 0 0 0 0 0 0 0 16-3584
+chrM 13999 0 0 0 0 0 0 0 16-3584
+chrM 14000 0 0 0 0 0 0 0 16-3584
+chrM 14001 0 0 0 0 0 0 0 16-3584
+chrM 14002 0 0 0 0 0 0 0 16-3584
+chrM 14003 0 0 0 0 0 0 0 16-3584
+chrM 14004 0 0 0 0 0 0 0 16-3584
+chrM 14005 0 0 0 0 0 0 0 16-3584
+chrM 14006 0 0 0 0 0 0 0 16-3584
+chrM 14007 0 0 0 0 0 0 0 16-3584
+chrM 14008 0 0 0 0 0 0 0 16-3584
+chrM 14009 0 0 0 0 0 0 0 16-3584
+chrM 14010 0 0 0 0 0 0 0 16-3584
+chrM 14011 0 0 0 0 0 0 0 16-3584
+chrM 14012 0 0 0 0 0 0 0 16-3584
+chrM 14013 0 0 0 0 0 0 0 16-3584
+chrM 14014 0 0 0 0 0 0 0 16-3584
+chrM 14015 0 0 0 0 0 0 0 16-3584
+chrM 14016 0 0 0 0 0 0 0 16-3584
+chrM 14017 0 0 0 0 0 0 0 16-3584
+chrM 14018 0 0 0 0 0 0 0 16-3584
+chrM 14019 0 0 0 0 0 0 0 16-3584
+chrM 14020 0 0 0 0 0 0 0 16-3584
+chrM 14021 0 0 0 0 0 0 0 16-3584
+chrM 14022 0 0 0 0 0 0 0 16-3584
+chrM 14023 0 0 0 0 0 0 0 16-3584
+chrM 14024 0 0 0 0 0 0 0 16-3584
+chrM 14025 0 0 0 0 0 0 0 16-3584
+chrM 14026 0 0 0 0 0 0 0 16-3584
+chrM 14027 0 0 0 0 0 0 0 16-3584
+chrM 14028 0 0 0 0 0 0 0 16-3584
+chrM 14029 0 0 0 0 0 0 0 16-3584
+chrM 14030 0 0 0 0 0 0 0 16-3584
+chrM 14031 0 0 0 0 0 0 0 16-3584
+chrM 14032 0 0 0 0 0 0 0 16-3584
+chrM 14033 0 0 0 0 0 0 0 16-3584
+chrM 14034 0 0 0 0 0 0 0 16-3584
+chrM 14035 0 0 0 0 0 0 0 16-3584
+chrM 14036 0 0 0 0 0 0 0 16-3584
+chrM 14037 0 0 0 0 0 0 0 16-3584
+chrM 14038 0 0 0 0 0 0 0 16-3584
+chrM 14039 0 0 0 0 0 0 0 16-3584
+chrM 14040 0 0 0 0 0 0 0 16-3584
+chrM 14041 0 0 0 0 0 0 0 16-3584
+chrM 14042 0 0 0 0 0 0 0 16-3584
+chrM 14043 0 0 0 0 0 0 0 16-3584
+chrM 14044 0 0 0 0 0 0 0 16-3584
+chrM 14045 0 0 0 0 0 0 0 16-3584
+chrM 14046 0 0 0 0 0 0 0 16-3584
+chrM 14047 0 0 0 0 0 0 0 16-3584
+chrM 14048 0 0 0 0 0 0 0 16-3584
+chrM 14049 0 0 0 0 0 0 0 16-3584
+chrM 14050 0 0 0 0 0 0 0 16-3584
+chrM 14051 0 0 0 0 0 0 0 16-3584
+chrM 14052 0 0 0 0 0 0 0 16-3584
+chrM 14053 0 0 0 0 0 0 0 16-3584
+chrM 14054 0 0 0 0 0 0 0 16-3584
+chrM 14055 0 0 0 0 0 0 0 16-3584
+chrM 14056 0 0 0 0 0 0 0 16-3584
+chrM 14057 0 0 0 0 0 0 0 16-3584
+chrM 14058 0 0 0 0 0 0 0 16-3584
+chrM 14059 0 0 0 0 0 0 0 16-3584
+chrM 14060 0 0 0 0 0 0 0 16-3584
+chrM 14061 0 0 0 0 0 0 0 16-3584
+chrM 14062 0 0 0 0 0 0 0 16-3584
+chrM 14063 0 0 0 0 0 0 0 16-3584
+chrM 14064 0 0 0 0 0 0 0 16-3584
+chrM 14065 0 0 0 0 0 0 0 16-3584
+chrM 14066 0 0 0 0 0 0 0 16-3584
+chrM 14067 0 0 0 0 0 0 0 16-3584
+chrM 14068 0 0 0 0 0 0 0 16-3584
+chrM 14069 0 0 0 0 0 0 0 16-3584
+chrM 14070 0 0 0 0 0 0 0 16-3584
+chrM 14071 0 0 0 0 0 0 0 16-3584
+chrM 14072 0 0 0 0 0 0 0 16-3584
+chrM 14073 0 0 0 0 0 0 0 16-3584
+chrM 14074 0 0 0 0 0 0 0 16-3584
+chrM 14075 0 0 0 0 0 0 0 16-3584
+chrM 14076 0 0 0 0 0 0 0 16-3584
+chrM 14077 0 0 0 0 0 0 0 16-3584
+chrM 14078 0 0 0 0 0 0 0 16-3584
+chrM 14079 0 0 0 0 0 0 0 16-3584
+chrM 14080 0 0 0 0 0 0 0 16-3584
+chrM 14081 0 0 0 0 0 0 0 16-3584
+chrM 14082 0 0 0 0 0 0 0 16-3584
+chrM 14083 0 0 0 0 0 0 0 16-3584
+chrM 14084 0 0 0 0 0 0 0 16-3584
+chrM 14085 0 0 0 0 0 0 0 16-3584
+chrM 14086 0 0 0 0 0 0 0 16-3584
+chrM 14087 0 0 0 0 0 0 0 16-3584
+chrM 14088 0 0 0 0 0 0 0 16-3584
+chrM 14089 0 0 0 0 0 0 0 16-3584
+chrM 14090 0 0 0 0 0 0 0 16-3584
+chrM 14091 0 0 0 0 0 0 0 16-3584
+chrM 14092 0 0 0 0 0 0 0 16-3584
+chrM 14093 0 0 0 0 0 0 0 16-3584
+chrM 14094 0 0 0 0 0 0 0 16-3584
+chrM 14095 0 0 0 0 0 0 0 16-3584
+chrM 14096 0 0 0 0 0 0 0 16-3584
+chrM 14097 0 0 0 0 0 0 0 16-3584
+chrM 14098 0 0 0 0 0 0 0 16-3584
+chrM 14099 0 0 0 0 0 0 0 16-3584
+chrM 14100 0 0 0 0 0 0 0 16-3584
+chrM 14101 0 0 0 0 0 0 0 16-3584
+chrM 14102 0 0 0 0 0 0 0 16-3584
+chrM 14103 0 0 0 0 0 0 0 16-3584
+chrM 14104 0 0 0 0 0 0 0 16-3584
+chrM 14105 0 0 0 0 0 0 0 16-3584
+chrM 14106 0 0 0 0 0 0 0 16-3584
+chrM 14107 0 0 0 0 0 0 0 16-3584
+chrM 14108 0 0 0 0 0 0 0 16-3584
+chrM 14109 0 0 0 0 0 0 0 16-3584
+chrM 14110 0 0 0 0 0 0 0 16-3584
+chrM 14111 0 0 0 0 0 0 0 16-3584
+chrM 14112 0 0 0 0 0 0 0 16-3584
+chrM 14113 0 0 0 0 0 0 0 16-3584
+chrM 14114 0 0 0 0 0 0 0 16-3584
+chrM 14115 0 0 0 0 0 0 0 16-3584
+chrM 14116 0 0 0 0 0 0 0 16-3584
+chrM 14117 0 0 0 0 0 0 0 16-3584
+chrM 14118 0 0 0 0 0 0 0 16-3584
+chrM 14119 0 0 0 0 0 0 0 16-3584
+chrM 14120 0 0 0 0 0 0 0 16-3584
+chrM 14121 0 0 0 0 0 0 0 16-3584
+chrM 14122 0 0 0 0 0 0 0 16-3584
+chrM 14123 0 0 0 0 0 0 0 16-3584
+chrM 14124 0 0 0 0 0 0 0 16-3584
+chrM 14125 0 0 0 0 0 0 0 16-3584
+chrM 14126 0 0 0 0 0 0 0 16-3584
+chrM 14127 0 0 0 0 0 0 0 16-3584
+chrM 14128 0 0 0 0 0 0 0 16-3584
+chrM 14129 0 0 0 0 0 0 0 16-3584
+chrM 14130 0 0 0 0 0 0 0 16-3584
+chrM 14131 0 0 0 0 0 0 0 16-3584
+chrM 14132 0 0 0 0 0 0 0 16-3584
+chrM 14133 0 0 0 0 0 0 0 16-3584
+chrM 14134 0 0 0 0 0 0 0 16-3584
+chrM 14135 0 0 0 0 0 0 0 16-3584
+chrM 14136 0 0 0 0 0 0 0 16-3584
+chrM 14137 0 0 0 0 0 0 0 16-3584
+chrM 14138 0 0 0 0 0 0 0 16-3584
+chrM 14139 0 0 0 0 0 0 0 16-3584
+chrM 14140 0 0 0 0 0 0 0 16-3584
+chrM 14141 0 0 0 0 0 0 0 16-3584
+chrM 14142 0 0 0 0 0 0 0 16-3584
+chrM 14143 0 0 0 0 0 0 0 16-3584
+chrM 14144 0 0 0 0 0 0 0 16-3584
+chrM 14145 0 0 0 0 0 0 0 16-3584
+chrM 14146 0 0 0 0 0 0 0 16-3584
+chrM 14147 0 0 0 0 0 0 0 16-3584
+chrM 14148 0 0 0 0 0 0 0 16-3584
+chrM 14149 0 0 0 0 0 0 0 16-3584
+chrM 14150 0 0 0 0 0 0 0 16-3584
+chrM 14151 0 0 0 0 0 0 0 16-3584
+chrM 14152 0 0 0 0 0 0 0 16-3584
+chrM 14153 0 0 0 0 0 0 0 16-3584
+chrM 14154 0 0 0 0 0 0 0 16-3584
+chrM 14155 0 0 0 0 0 0 0 16-3584
+chrM 14156 0 0 0 0 0 0 0 16-3584
+chrM 14157 0 0 0 0 0 0 0 16-3584
+chrM 14158 0 0 0 0 0 0 0 16-3584
+chrM 14159 0 0 0 0 0 0 0 16-3584
+chrM 14160 0 0 0 0 0 0 0 16-3584
+chrM 14161 0 0 0 0 0 0 0 16-3584
+chrM 14162 0 0 0 0 0 0 0 16-3584
+chrM 14163 0 0 0 0 0 0 0 16-3584
+chrM 14164 0 0 0 0 0 0 0 16-3584
+chrM 14165 0 0 0 0 0 0 0 16-3584
+chrM 14166 0 0 0 0 0 0 0 16-3584
+chrM 14167 0 0 0 0 0 0 0 16-3584
+chrM 14168 0 0 0 0 0 0 0 16-3584
+chrM 14169 0 0 0 0 0 0 0 16-3584
+chrM 14170 0 0 0 0 0 0 0 16-3584
+chrM 14171 0 0 0 0 0 0 0 16-3584
+chrM 14172 0 0 0 0 0 0 0 16-3584
+chrM 14173 0 0 0 0 0 0 0 16-3584
+chrM 14174 0 0 0 0 0 0 0 16-3584
+chrM 14175 0 0 0 0 0 0 0 16-3584
+chrM 14176 0 0 0 0 0 0 0 16-3584
+chrM 14177 0 0 0 0 0 0 0 16-3584
+chrM 14178 0 0 0 0 0 0 0 16-3584
+chrM 14179 0 0 0 0 0 0 0 16-3584
+chrM 14180 0 0 0 0 0 0 0 16-3584
+chrM 14181 0 0 0 0 0 0 0 16-3584
+chrM 14182 0 0 0 0 0 0 0 16-3584
+chrM 14183 0 0 0 0 0 0 0 16-3584
+chrM 14184 0 0 0 0 0 0 0 16-3584
+chrM 14185 0 0 0 0 0 0 0 16-3584
+chrM 14186 0 0 0 0 0 0 0 16-3584
+chrM 14187 0 0 0 0 0 0 0 16-3584
+chrM 14188 0 0 0 0 0 0 0 16-3584
+chrM 14189 0 0 0 0 0 0 0 16-3584
+chrM 14190 0 0 0 0 0 0 0 16-3584
+chrM 14191 0 0 0 0 0 0 0 16-3584
+chrM 14192 0 0 0 0 0 0 0 16-3584
+chrM 14193 0 0 0 0 0 0 0 16-3584
+chrM 14194 0 0 0 0 0 0 0 16-3584
+chrM 14195 0 0 0 0 0 0 0 16-3584
+chrM 14196 0 0 0 0 0 0 0 16-3584
+chrM 14197 0 0 0 0 0 0 0 16-3584
+chrM 14198 0 0 0 0 0 0 0 16-3584
+chrM 14199 0 0 0 0 0 0 0 16-3584
+chrM 14200 0 0 0 0 0 0 0 16-3584
+chrM 14201 0 0 0 0 0 0 0 16-3584
+chrM 14202 0 0 0 0 0 0 0 16-3584
+chrM 14203 0 0 0 0 0 0 0 16-3584
+chrM 14204 0 0 0 0 0 0 0 16-3584
+chrM 14205 0 0 0 0 0 0 0 16-3584
+chrM 14206 0 0 0 0 0 0 0 16-3584
+chrM 14207 0 0 0 0 0 0 0 16-3584
+chrM 14208 0 0 0 0 0 0 0 16-3584
+chrM 14209 0 0 0 0 0 0 0 16-3584
+chrM 14210 0 0 0 0 0 0 0 16-3584
+chrM 14211 0 0 0 0 0 0 0 16-3584
+chrM 14212 0 0 0 0 0 0 0 16-3584
+chrM 14213 0 0 0 0 0 0 0 16-3584
+chrM 14214 0 0 0 0 0 0 0 16-3584
+chrM 14215 0 0 0 0 0 0 0 16-3584
+chrM 14216 0 0 0 0 0 0 0 16-3584
+chrM 14217 0 0 0 0 0 0 0 16-3584
+chrM 14218 0 0 0 0 0 0 0 16-3584
+chrM 14219 0 0 0 0 0 0 0 16-3584
+chrM 14220 0 0 0 0 0 0 0 16-3584
+chrM 14221 0 0 0 0 0 0 0 16-3584
+chrM 14222 0 0 0 0 0 0 0 16-3584
+chrM 14223 0 0 0 0 0 0 0 16-3584
+chrM 14224 0 0 0 0 0 0 0 16-3584
+chrM 14225 0 0 0 0 0 0 0 16-3584
+chrM 14226 0 0 0 0 0 0 0 16-3584
+chrM 14227 0 0 0 0 0 0 0 16-3584
+chrM 14228 0 0 0 0 0 0 0 16-3584
+chrM 14229 0 0 0 0 0 0 0 16-3584
+chrM 14230 0 0 0 0 0 0 0 16-3584
+chrM 14231 0 0 0 0 0 0 0 16-3584
+chrM 14232 0 0 0 0 0 0 0 16-3584
+chrM 14233 0 0 0 0 0 0 0 16-3584
+chrM 14234 0 0 0 0 0 0 0 16-3584
+chrM 14235 0 0 0 0 0 0 0 16-3584
+chrM 14236 0 0 0 0 0 0 0 16-3584
+chrM 14237 0 0 0 0 0 0 0 16-3584
+chrM 14238 0 0 0 0 0 0 0 16-3584
+chrM 14239 0 0 0 0 0 0 0 16-3584
+chrM 14240 0 0 0 0 0 0 0 16-3584
+chrM 14241 0 0 0 0 0 0 0 16-3584
+chrM 14242 0 0 0 0 0 0 0 16-3584
+chrM 14243 0 0 0 0 0 0 0 16-3584
+chrM 14244 0 0 0 0 0 0 0 16-3584
+chrM 14245 0 0 0 0 0 0 0 16-3584
+chrM 14246 0 0 0 0 0 0 0 16-3584
+chrM 14247 0 0 0 0 0 0 0 16-3584
+chrM 14248 0 0 0 0 0 0 0 16-3584
+chrM 14249 0 0 0 0 0 0 0 16-3584
+chrM 14250 0 0 0 0 0 0 0 16-3584
+chrM 14251 0 0 0 0 0 0 0 16-3584
+chrM 14252 0 0 0 0 0 0 0 16-3584
+chrM 14253 0 0 0 0 0 0 0 16-3584
+chrM 14254 0 0 0 0 0 0 0 16-3584
+chrM 14255 0 0 0 0 0 0 0 16-3584
+chrM 14256 0 0 0 0 0 0 0 16-3584
+chrM 14257 0 0 0 0 0 0 0 16-3584
+chrM 14258 0 0 0 0 0 0 0 16-3584
+chrM 14259 0 0 0 0 0 0 0 16-3584
+chrM 14260 0 0 0 0 0 0 0 16-3584
+chrM 14261 0 0 0 0 0 0 0 16-3584
+chrM 14262 0 0 0 0 0 0 0 16-3584
+chrM 14263 0 0 0 0 0 0 0 16-3584
+chrM 14264 0 0 0 0 0 0 0 16-3584
+chrM 14265 0 0 0 0 0 0 0 16-3584
+chrM 14266 0 0 0 0 0 0 0 16-3584
+chrM 14267 0 0 0 0 0 0 0 16-3584
+chrM 14268 0 0 0 0 0 0 0 16-3584
+chrM 14269 0 0 0 0 0 0 0 16-3584
+chrM 14270 0 0 0 0 0 0 0 16-3584
+chrM 14271 0 0 0 0 0 0 0 16-3584
+chrM 14272 0 0 0 0 0 0 0 16-3584
+chrM 14273 0 0 0 0 0 0 0 16-3584
+chrM 14274 0 0 0 0 0 0 0 16-3584
+chrM 14275 0 0 0 0 0 0 0 16-3584
+chrM 14276 0 0 0 0 0 0 0 16-3584
+chrM 14277 0 0 0 0 0 0 0 16-3584
+chrM 14278 0 0 0 0 0 0 0 16-3584
+chrM 14279 0 0 0 0 0 0 0 16-3584
+chrM 14280 0 0 0 0 0 0 0 16-3584
+chrM 14281 0 0 0 0 0 0 0 16-3584
+chrM 14282 0 0 0 0 0 0 0 16-3584
+chrM 14283 0 0 0 0 0 0 0 16-3584
+chrM 14284 0 0 0 0 0 0 0 16-3584
+chrM 14285 0 0 0 0 0 0 0 16-3584
+chrM 14286 0 0 0 0 0 0 0 16-3584
+chrM 14287 0 0 0 0 0 0 0 16-3584
+chrM 14288 0 0 0 0 0 0 0 16-3584
+chrM 14289 0 0 0 0 0 0 0 16-3584
+chrM 14290 0 0 0 0 0 0 0 16-3584
+chrM 14291 0 0 0 0 0 0 0 16-3584
+chrM 14292 0 0 0 0 0 0 0 16-3584
+chrM 14293 0 0 0 0 0 0 0 16-3584
+chrM 14294 0 0 0 0 0 0 0 16-3584
+chrM 14295 0 0 0 0 0 0 0 16-3584
+chrM 14296 0 0 0 0 0 0 0 16-3584
+chrM 14297 0 0 0 0 0 0 0 16-3584
+chrM 14298 0 0 0 0 0 0 0 16-3584
+chrM 14299 0 0 0 0 0 0 0 16-3584
+chrM 14300 0 0 0 0 0 0 0 16-3584
+chrM 14301 0 0 0 0 0 0 0 16-3584
+chrM 14302 0 0 0 0 0 0 0 16-3584
+chrM 14303 0 0 0 0 0 0 0 16-3584
+chrM 14304 0 0 0 0 0 0 0 16-3584
+chrM 14305 0 0 0 0 0 0 0 16-3584
+chrM 14306 0 0 0 0 0 0 0 16-3584
+chrM 14307 0 0 0 0 0 0 0 16-3584
+chrM 14308 0 0 0 0 0 0 0 16-3584
+chrM 14309 0 0 0 0 0 0 0 16-3584
+chrM 14310 0 0 0 0 0 0 0 16-3584
+chrM 14311 0 0 0 0 0 0 0 16-3584
+chrM 14312 0 0 0 0 0 0 0 16-3584
+chrM 14313 0 0 0 0 0 0 0 16-3584
+chrM 14314 0 0 0 0 0 0 0 16-3584
+chrM 14315 0 0 0 0 0 0 0 16-3584
+chrM 14316 0 0 0 0 0 0 0 16-3584
+chrM 14317 0 0 0 0 0 0 0 16-3584
+chrM 14318 0 0 0 0 0 0 0 16-3584
+chrM 14319 0 0 0 0 0 0 0 16-3584
+chrM 14320 0 0 0 0 0 0 0 16-3584
+chrM 14321 0 0 0 0 0 0 0 16-3584
+chrM 14322 0 0 0 0 0 0 0 16-3584
+chrM 14323 0 0 0 0 0 0 0 16-3584
+chrM 14324 0 0 0 0 0 0 0 16-3584
+chrM 14325 0 0 0 0 0 0 0 16-3584
+chrM 14326 0 0 0 0 0 0 0 16-3584
+chrM 14327 0 0 0 0 0 0 0 16-3584
+chrM 14328 0 0 0 0 0 0 0 16-3584
+chrM 14329 0 0 0 0 0 0 0 16-3584
+chrM 14330 0 0 0 0 0 0 0 16-3584
+chrM 14331 0 0 0 0 0 0 0 16-3584
+chrM 14332 0 0 0 0 0 0 0 16-3584
+chrM 14333 0 0 0 0 0 0 0 16-3584
+chrM 14334 0 0 0 0 0 0 0 16-3584
+chrM 14335 0 0 0 0 0 0 0 16-3584
+chrM 14336 0 0 0 0 0 0 0 16-3584
+chrM 14337 0 0 0 0 0 0 0 16-3584
+chrM 14338 0 0 0 0 0 0 0 16-3584
+chrM 14339 0 0 0 0 0 0 0 16-3584
+chrM 14340 0 0 0 0 0 0 0 16-3584
+chrM 14341 0 0 0 0 0 0 0 16-3584
+chrM 14342 0 0 0 0 0 0 0 16-3584
+chrM 14343 0 0 0 0 0 0 0 16-3584
+chrM 14344 0 0 0 0 0 0 0 16-3584
+chrM 14345 0 0 0 0 0 0 0 16-3584
+chrM 14346 0 0 0 0 0 0 0 16-3584
+chrM 14347 0 0 0 0 0 0 0 16-3584
+chrM 14348 0 0 0 0 0 0 0 16-3584
+chrM 14349 0 0 0 0 0 0 0 16-3584
+chrM 14350 0 0 0 0 0 0 0 16-3584
+chrM 14351 0 0 0 0 0 0 0 16-3584
+chrM 14352 0 0 0 0 0 0 0 16-3584
+chrM 14353 0 0 0 0 0 0 0 16-3584
+chrM 14354 0 0 0 0 0 0 0 16-3584
+chrM 14355 0 0 0 0 0 0 0 16-3584
+chrM 14356 0 0 0 0 0 0 0 16-3584
+chrM 14357 0 0 0 0 0 0 0 16-3584
+chrM 14358 0 0 0 0 0 0 0 16-3584
+chrM 14359 0 0 0 0 0 0 0 16-3584
+chrM 14360 0 0 0 0 0 0 0 16-3584
+chrM 14361 0 0 0 0 0 0 0 16-3584
+chrM 14362 0 0 0 0 0 0 0 16-3584
+chrM 14363 0 0 0 0 0 0 0 16-3584
+chrM 14364 0 0 0 0 0 0 0 16-3584
+chrM 14365 0 0 0 0 0 0 0 16-3584
+chrM 14366 0 0 0 0 0 0 0 16-3584
+chrM 14367 0 0 0 0 0 0 0 16-3584
+chrM 14368 0 0 0 0 0 0 0 16-3584
+chrM 14369 0 0 0 0 0 0 0 16-3584
+chrM 14370 0 0 0 0 0 0 0 16-3584
+chrM 14371 0 0 0 0 0 0 0 16-3584
+chrM 14372 0 0 0 0 0 0 0 16-3584
+chrM 14373 0 0 0 0 0 0 0 16-3584
+chrM 14374 0 0 0 0 0 0 0 16-3584
+chrM 14375 0 0 0 0 0 0 0 16-3584
+chrM 14376 0 0 0 0 0 0 0 16-3584
+chrM 14377 0 0 0 0 0 0 0 16-3584
+chrM 14378 0 0 0 0 0 0 0 16-3584
+chrM 14379 0 0 0 0 0 0 0 16-3584
+chrM 14380 0 0 0 0 0 0 0 16-3584
+chrM 14381 0 0 0 0 0 0 0 16-3584
+chrM 14382 0 0 0 0 0 0 0 16-3584
+chrM 14383 0 0 0 0 0 0 0 16-3584
+chrM 14384 0 0 0 0 0 0 0 16-3584
+chrM 14385 0 0 0 0 0 0 0 16-3584
+chrM 14386 0 0 0 0 0 0 0 16-3584
+chrM 14387 0 0 0 0 0 0 0 16-3584
+chrM 14388 0 0 0 0 0 0 0 16-3584
+chrM 14389 0 0 0 0 0 0 0 16-3584
+chrM 14390 0 0 0 0 0 0 0 16-3584
+chrM 14391 0 0 0 0 0 0 0 16-3584
+chrM 14392 0 0 0 0 0 0 0 16-3584
+chrM 14393 0 0 0 0 0 0 0 16-3584
+chrM 14394 0 0 0 0 0 0 0 16-3584
+chrM 14395 0 0 0 0 0 0 0 16-3584
+chrM 14396 0 0 0 0 0 0 0 16-3584
+chrM 14397 0 0 0 0 0 0 0 16-3584
+chrM 14398 0 0 0 0 0 0 0 16-3584
+chrM 14399 0 0 0 0 0 0 0 16-3584
+chrM 14400 0 0 0 0 0 0 0 16-3584
+chrM 14401 0 0 0 0 0 0 0 16-3584
+chrM 14402 0 0 0 0 0 0 0 16-3584
+chrM 14403 0 0 0 0 0 0 0 16-3584
+chrM 14404 0 0 0 0 0 0 0 16-3584
+chrM 14405 0 0 0 0 0 0 0 16-3584
+chrM 14406 0 0 0 0 0 0 0 16-3584
+chrM 14407 0 0 0 0 0 0 0 16-3584
+chrM 14408 0 0 0 0 0 0 0 16-3584
+chrM 14409 0 0 0 0 0 0 0 16-3584
+chrM 14410 0 0 0 0 0 0 0 16-3584
+chrM 14411 0 0 0 0 0 0 0 16-3584
+chrM 14412 0 0 0 0 0 0 0 16-3584
+chrM 14413 0 0 0 0 0 0 0 16-3584
+chrM 14414 0 0 0 0 0 0 0 16-3584
+chrM 14415 0 0 0 0 0 0 0 16-3584
+chrM 14416 0 0 0 0 0 0 0 16-3584
+chrM 14417 0 0 0 0 0 0 0 16-3584
+chrM 14418 0 0 0 0 0 0 0 16-3584
+chrM 14419 0 0 0 0 0 0 0 16-3584
+chrM 14420 0 0 0 0 0 0 0 16-3584
+chrM 14421 0 0 0 0 0 0 0 16-3584
+chrM 14422 0 0 0 0 0 0 0 16-3584
+chrM 14423 0 0 0 0 0 0 0 16-3584
+chrM 14424 0 0 0 0 0 0 0 16-3584
+chrM 14425 0 0 0 0 0 0 0 16-3584
+chrM 14426 0 0 0 0 0 0 0 16-3584
+chrM 14427 0 0 0 0 0 0 0 16-3584
+chrM 14428 0 0 0 0 0 0 0 16-3584
+chrM 14429 0 0 0 0 0 0 0 16-3584
+chrM 14430 0 0 0 0 0 0 0 16-3584
+chrM 14431 0 0 0 0 0 0 0 16-3584
+chrM 14432 0 0 0 0 0 0 0 16-3584
+chrM 14433 0 0 0 0 0 0 0 16-3584
+chrM 14434 0 0 0 0 0 0 0 16-3584
+chrM 14435 0 0 0 0 0 0 0 16-3584
+chrM 14436 0 0 0 0 0 0 0 16-3584
+chrM 14437 0 0 0 0 0 0 0 16-3584
+chrM 14438 0 0 0 0 0 0 0 16-3584
+chrM 14439 0 0 0 0 0 0 0 16-3584
+chrM 14440 0 0 0 0 0 0 0 16-3584
+chrM 14441 0 0 0 0 0 0 0 16-3584
+chrM 14442 0 0 0 0 0 0 0 16-3584
+chrM 14443 0 0 0 0 0 0 0 16-3584
+chrM 14444 0 0 0 0 0 0 0 16-3584
+chrM 14445 0 0 0 0 0 0 0 16-3584
+chrM 14446 0 0 0 0 0 0 0 16-3584
+chrM 14447 0 0 0 0 0 0 0 16-3584
+chrM 14448 0 0 0 0 0 0 0 16-3584
+chrM 14449 0 0 0 0 0 0 0 16-3584
+chrM 14450 0 0 0 0 0 0 0 16-3584
+chrM 14451 0 0 0 0 0 0 0 16-3584
+chrM 14452 0 0 0 0 0 0 0 16-3584
+chrM 14453 0 0 0 0 0 0 0 16-3584
+chrM 14454 0 0 0 0 0 0 0 16-3584
+chrM 14455 0 0 0 0 0 0 0 16-3584
+chrM 14456 0 0 0 0 0 0 0 16-3584
+chrM 14457 0 0 0 0 0 0 0 16-3584
+chrM 14458 0 0 0 0 0 0 0 16-3584
+chrM 14459 0 0 0 0 0 0 0 16-3584
+chrM 14460 0 0 0 0 0 0 0 16-3584
+chrM 14461 0 0 0 0 0 0 0 16-3584
+chrM 14462 0 0 0 0 0 0 0 16-3584
+chrM 14463 0 0 0 0 0 0 0 16-3584
+chrM 14464 0 0 0 0 0 0 0 16-3584
+chrM 14465 0 0 0 0 0 0 0 16-3584
+chrM 14466 0 0 0 0 0 0 0 16-3584
+chrM 14467 0 0 0 0 0 0 0 16-3584
+chrM 14468 0 0 0 0 0 0 0 16-3584
+chrM 14469 0 0 0 0 0 0 0 16-3584
+chrM 14470 0 0 0 0 0 0 0 16-3584
+chrM 14471 0 0 0 0 0 0 0 16-3584
+chrM 14472 0 0 0 0 0 0 0 16-3584
+chrM 14473 0 0 0 0 0 0 0 16-3584
+chrM 14474 0 0 0 0 0 0 0 16-3584
+chrM 14475 0 0 0 0 0 0 0 16-3584
+chrM 14476 0 0 0 0 0 0 0 16-3584
+chrM 14477 0 0 0 0 0 0 0 16-3584
+chrM 14478 0 0 0 0 0 0 0 16-3584
+chrM 14479 0 0 0 0 0 0 0 16-3584
+chrM 14480 0 0 0 0 0 0 0 16-3584
+chrM 14481 0 0 0 0 0 0 0 16-3584
+chrM 14482 0 0 0 0 0 0 0 16-3584
+chrM 14483 0 0 0 0 0 0 0 16-3584
+chrM 14484 0 0 0 0 0 0 0 16-3584
+chrM 14485 0 0 0 0 0 0 0 16-3584
+chrM 14486 0 0 0 0 0 0 0 16-3584
+chrM 14487 0 0 0 0 0 0 0 16-3584
+chrM 14488 0 0 0 0 0 0 0 16-3584
+chrM 14489 0 0 0 0 0 0 0 16-3584
+chrM 14490 0 0 0 0 0 0 0 16-3584
+chrM 14491 0 0 0 0 0 0 0 16-3584
+chrM 14492 0 0 0 0 0 0 0 16-3584
+chrM 14493 0 0 0 0 0 0 0 16-3584
+chrM 14494 0 0 0 0 0 0 0 16-3584
+chrM 14495 0 0 0 0 0 0 0 16-3584
+chrM 14496 0 0 0 0 0 0 0 16-3584
+chrM 14497 0 0 0 0 0 0 0 16-3584
+chrM 14498 0 0 0 0 0 0 0 16-3584
+chrM 14499 0 0 0 0 0 0 0 16-3584
+chrM 14500 0 0 0 0 0 0 0 16-3584
+chrM 14501 0 0 0 0 0 0 0 16-3584
+chrM 14502 0 0 0 0 0 0 0 16-3584
+chrM 14503 0 0 0 0 0 0 0 16-3584
+chrM 14504 0 0 0 0 0 0 0 16-3584
+chrM 14505 0 0 0 0 0 0 0 16-3584
+chrM 14506 0 0 0 0 0 0 0 16-3584
+chrM 14507 0 0 0 0 0 0 0 16-3584
+chrM 14508 0 0 0 0 0 0 0 16-3584
+chrM 14509 0 0 0 0 0 0 0 16-3584
+chrM 14510 0 0 0 0 0 0 0 16-3584
+chrM 14511 0 0 0 0 0 0 0 16-3584
+chrM 14512 0 0 0 0 0 0 0 16-3584
+chrM 14513 0 0 0 0 0 0 0 16-3584
+chrM 14514 0 0 0 0 0 0 0 16-3584
+chrM 14515 0 0 0 0 0 0 0 16-3584
+chrM 14516 0 0 0 0 0 0 0 16-3584
+chrM 14517 0 0 0 0 0 0 0 16-3584
+chrM 14518 0 0 0 0 0 0 0 16-3584
+chrM 14519 0 0 0 0 0 0 0 16-3584
+chrM 14520 0 0 0 0 0 0 0 16-3584
+chrM 14521 0 0 0 0 0 0 0 16-3584
+chrM 14522 0 0 0 0 0 0 0 16-3584
+chrM 14523 0 0 0 0 0 0 0 16-3584
+chrM 14524 0 0 0 0 0 0 0 16-3584
+chrM 14525 0 0 0 0 0 0 0 16-3584
+chrM 14526 0 0 0 0 0 0 0 16-3584
+chrM 14527 0 0 0 0 0 0 0 16-3584
+chrM 14528 0 0 0 0 0 0 0 16-3584
+chrM 14529 0 0 0 0 0 0 0 16-3584
+chrM 14530 0 0 0 0 0 0 0 16-3584
+chrM 14531 0 0 0 0 0 0 0 16-3584
+chrM 14532 0 0 0 0 0 0 0 16-3584
+chrM 14533 0 0 0 0 0 0 0 16-3584
+chrM 14534 0 0 0 0 0 0 0 16-3584
+chrM 14535 0 0 0 0 0 0 0 16-3584
+chrM 14536 0 0 0 0 0 0 0 16-3584
+chrM 14537 0 0 0 0 0 0 0 16-3584
+chrM 14538 0 0 0 0 0 0 0 16-3584
+chrM 14539 0 0 0 0 0 0 0 16-3584
+chrM 14540 0 0 0 0 0 0 0 16-3584
+chrM 14541 0 0 0 0 0 0 0 16-3584
+chrM 14542 0 0 0 0 0 0 0 16-3584
+chrM 14543 0 0 0 0 0 0 0 16-3584
+chrM 14544 0 0 0 0 0 0 0 16-3584
+chrM 14545 0 0 0 0 0 0 0 16-3584
+chrM 14546 0 0 0 0 0 0 0 16-3584
+chrM 14547 0 0 0 0 0 0 0 16-3584
+chrM 14548 0 0 0 0 0 0 0 16-3584
+chrM 14549 0 0 0 0 0 0 0 16-3584
+chrM 14550 0 0 0 0 0 0 0 16-3584
+chrM 14551 0 0 0 0 0 0 0 16-3584
+chrM 14552 0 0 0 0 0 0 0 16-3584
+chrM 14553 0 0 0 0 0 0 0 16-3584
+chrM 14554 0 0 0 0 0 0 0 16-3584
+chrM 14555 0 0 0 0 0 0 0 16-3584
+chrM 14556 0 0 0 0 0 0 0 16-3584
+chrM 14557 0 0 0 0 0 0 0 16-3584
+chrM 14558 0 0 0 0 0 0 0 16-3584
+chrM 14559 0 0 0 0 0 0 0 16-3584
+chrM 14560 0 0 0 0 0 0 0 16-3584
+chrM 14561 0 0 0 0 0 0 0 16-3584
+chrM 14562 0 0 0 0 0 0 0 16-3584
+chrM 14563 0 0 0 0 0 0 0 16-3584
+chrM 14564 0 0 0 0 0 0 0 16-3584
+chrM 14565 0 0 0 0 0 0 0 16-3584
+chrM 14566 0 0 0 0 0 0 0 16-3584
+chrM 14567 0 0 0 0 0 0 0 16-3584
+chrM 14568 0 0 0 0 0 0 0 16-3584
+chrM 14569 0 0 0 0 0 0 0 16-3584
+chrM 14570 0 0 0 0 0 0 0 16-3584
+chrM 14571 0 0 0 0 0 0 0 16-3584
+chrM 14572 0 0 0 0 0 0 0 16-3584
+chrM 14573 0 0 0 0 0 0 0 16-3584
+chrM 14574 0 0 0 0 0 0 0 16-3584
+chrM 14575 0 0 0 0 0 0 0 16-3584
+chrM 14576 0 0 0 0 0 0 0 16-3584
+chrM 14577 0 0 0 0 0 0 0 16-3584
+chrM 14578 0 0 0 0 0 0 0 16-3584
+chrM 14579 0 0 0 0 0 0 0 16-3584
+chrM 14580 0 0 0 0 0 0 0 16-3584
+chrM 14581 0 0 0 0 0 0 0 16-3584
+chrM 14582 0 0 0 0 0 0 0 16-3584
+chrM 14583 0 0 0 0 0 0 0 16-3584
+chrM 14584 0 0 0 0 0 0 0 16-3584
+chrM 14585 0 0 0 0 0 0 0 16-3584
+chrM 14586 0 0 0 0 0 0 0 16-3584
+chrM 14587 0 0 0 0 0 0 0 16-3584
+chrM 14588 0 0 0 0 0 0 0 16-3584
+chrM 14589 0 0 0 0 0 0 0 16-3584
+chrM 14590 0 0 0 0 0 0 0 16-3584
+chrM 14591 0 0 0 0 0 0 0 16-3584
+chrM 14592 0 0 0 0 0 0 0 16-3584
+chrM 14593 0 0 0 0 0 0 0 16-3584
+chrM 14594 0 0 0 0 0 0 0 16-3584
+chrM 14595 0 0 0 0 0 0 0 16-3584
+chrM 14596 0 0 0 0 0 0 0 16-3584
+chrM 14597 0 0 0 0 0 0 0 16-3584
+chrM 14598 0 0 0 0 0 0 0 16-3584
+chrM 14599 0 0 0 0 0 0 0 16-3584
+chrM 14600 0 0 0 0 0 0 0 16-3584
+chrM 14601 0 0 0 0 0 0 0 16-3584
+chrM 14602 0 0 0 0 0 0 0 16-3584
+chrM 14603 0 0 0 0 0 0 0 16-3584
+chrM 14604 0 0 0 0 0 0 0 16-3584
+chrM 14605 0 0 0 0 0 0 0 16-3584
+chrM 14606 0 0 0 0 0 0 0 16-3584
+chrM 14607 0 0 0 0 0 0 0 16-3584
+chrM 14608 0 0 0 0 0 0 0 16-3584
+chrM 14609 0 0 0 0 0 0 0 16-3584
+chrM 14610 0 0 0 0 0 0 0 16-3584
+chrM 14611 0 0 0 0 0 0 0 16-3584
+chrM 14612 0 0 0 0 0 0 0 16-3584
+chrM 14613 0 0 0 0 0 0 0 16-3584
+chrM 14614 0 0 0 0 0 0 0 16-3584
+chrM 14615 0 0 0 0 0 0 0 16-3584
+chrM 14616 0 0 0 0 0 0 0 16-3584
+chrM 14617 0 0 0 0 0 0 0 16-3584
+chrM 14618 0 0 0 0 0 0 0 16-3584
+chrM 14619 0 0 0 0 0 0 0 16-3584
+chrM 14620 0 0 0 0 0 0 0 16-3584
+chrM 14621 0 0 0 0 0 0 0 16-3584
+chrM 14622 0 0 0 0 0 0 0 16-3584
+chrM 14623 0 0 0 0 0 0 0 16-3584
+chrM 14624 0 0 0 0 0 0 0 16-3584
+chrM 14625 0 0 0 0 0 0 0 16-3584
+chrM 14626 0 0 0 0 0 0 0 16-3584
+chrM 14627 0 0 0 0 0 0 0 16-3584
+chrM 14628 0 0 0 0 0 0 0 16-3584
+chrM 14629 0 0 0 0 0 0 0 16-3584
+chrM 14630 0 0 0 0 0 0 0 16-3584
+chrM 14631 0 0 0 0 0 0 0 16-3584
+chrM 14632 0 0 0 0 0 0 0 16-3584
+chrM 14633 0 0 0 0 0 0 0 16-3584
+chrM 14634 0 0 0 0 0 0 0 16-3584
+chrM 14635 0 0 0 0 0 0 0 16-3584
+chrM 14636 0 0 0 0 0 0 0 16-3584
+chrM 14637 0 0 0 0 0 0 0 16-3584
+chrM 14638 0 0 0 0 0 0 0 16-3584
+chrM 14639 0 0 0 0 0 0 0 16-3584
+chrM 14640 0 0 0 0 0 0 0 16-3584
+chrM 14641 0 0 0 0 0 0 0 16-3584
+chrM 14642 0 0 0 0 0 0 0 16-3584
+chrM 14643 0 0 0 0 0 0 0 16-3584
+chrM 14644 0 0 0 0 0 0 0 16-3584
+chrM 14645 0 0 0 0 0 0 0 16-3584
+chrM 14646 0 0 0 0 0 0 0 16-3584
+chrM 14647 0 0 0 0 0 0 0 16-3584
+chrM 14648 0 0 0 0 0 0 0 16-3584
+chrM 14649 0 0 0 0 0 0 0 16-3584
+chrM 14650 0 0 0 0 0 0 0 16-3584
+chrM 14651 0 0 0 0 0 0 0 16-3584
+chrM 14652 0 0 0 0 0 0 0 16-3584
+chrM 14653 0 0 0 0 0 0 0 16-3584
+chrM 14654 0 0 0 0 0 0 0 16-3584
+chrM 14655 0 0 0 0 0 0 0 16-3584
+chrM 14656 0 0 0 0 0 0 0 16-3584
+chrM 14657 0 0 0 0 0 0 0 16-3584
+chrM 14658 0 0 0 0 0 0 0 16-3584
+chrM 14659 0 0 0 0 0 0 0 16-3584
+chrM 14660 0 0 0 0 0 0 0 16-3584
+chrM 14661 0 0 0 0 0 0 0 16-3584
+chrM 14662 0 0 0 0 0 0 0 16-3584
+chrM 14663 0 0 0 0 0 0 0 16-3584
+chrM 14664 0 0 0 0 0 0 0 16-3584
+chrM 14665 0 0 0 0 0 0 0 16-3584
+chrM 14666 0 0 0 0 0 0 0 16-3584
+chrM 14667 0 0 0 0 0 0 0 16-3584
+chrM 14668 0 0 0 0 0 0 0 16-3584
+chrM 14669 0 0 0 0 0 0 0 16-3584
+chrM 14670 0 0 0 0 0 0 0 16-3584
+chrM 14671 0 0 0 0 0 0 0 16-3584
+chrM 14672 0 0 0 0 0 0 0 16-3584
+chrM 14673 0 0 0 0 0 0 0 16-3584
+chrM 14674 0 0 0 0 0 0 0 16-3584
+chrM 14675 0 0 0 0 0 0 0 16-3584
+chrM 14676 0 0 0 0 0 0 0 16-3584
+chrM 14677 0 0 0 0 0 0 0 16-3584
+chrM 14678 0 0 0 0 0 0 0 16-3584
+chrM 14679 0 0 0 0 0 0 0 16-3584
+chrM 14680 0 0 0 0 0 0 0 16-3584
+chrM 14681 0 0 0 0 0 0 0 16-3584
+chrM 14682 0 0 0 0 0 0 0 16-3584
+chrM 14683 0 0 0 0 0 0 0 16-3584
+chrM 14684 0 0 0 0 0 0 0 16-3584
+chrM 14685 0 0 0 0 0 0 0 16-3584
+chrM 14686 0 0 0 0 0 0 0 16-3584
+chrM 14687 0 0 0 0 0 0 0 16-3584
+chrM 14688 0 0 0 0 0 0 0 16-3584
+chrM 14689 0 0 0 0 0 0 0 16-3584
+chrM 14690 0 0 0 0 0 0 0 16-3584
+chrM 14691 0 0 0 0 0 0 0 16-3584
+chrM 14692 0 0 0 0 0 0 0 16-3584
+chrM 14693 0 0 0 0 0 0 0 16-3584
+chrM 14694 0 0 0 0 0 0 0 16-3584
+chrM 14695 0 0 0 0 0 0 0 16-3584
+chrM 14696 0 0 0 0 0 0 0 16-3584
+chrM 14697 0 0 0 0 0 0 0 16-3584
+chrM 14698 0 0 0 0 0 0 0 16-3584
+chrM 14699 0 0 0 0 0 0 0 16-3584
+chrM 14700 0 0 0 0 0 0 0 16-3584
+chrM 14701 0 0 0 0 0 0 0 16-3584
+chrM 14702 0 0 0 0 0 0 0 16-3584
+chrM 14703 0 0 0 0 0 0 0 16-3584
+chrM 14704 0 0 0 0 0 0 0 16-3584
+chrM 14705 0 0 0 0 0 0 0 16-3584
+chrM 14706 0 0 0 0 0 0 0 16-3584
+chrM 14707 0 0 0 0 0 0 0 16-3584
+chrM 14708 0 0 0 0 0 0 0 16-3584
+chrM 14709 0 0 0 0 0 0 0 16-3584
+chrM 14710 0 0 0 0 0 0 0 16-3584
+chrM 14711 0 0 0 0 0 0 0 16-3584
+chrM 14712 0 0 0 0 0 0 0 16-3584
+chrM 14713 0 0 0 0 0 0 0 16-3584
+chrM 14714 0 0 0 0 0 0 0 16-3584
+chrM 14715 0 0 0 0 0 0 0 16-3584
+chrM 14716 0 0 0 0 0 0 0 16-3584
+chrM 14717 0 0 0 0 0 0 0 16-3584
+chrM 14718 0 0 0 0 0 0 0 16-3584
+chrM 14719 0 0 0 0 0 0 0 16-3584
+chrM 14720 0 0 0 0 0 0 0 16-3584
+chrM 14721 0 0 0 0 0 0 0 16-3584
+chrM 14722 0 0 0 0 0 0 0 16-3584
+chrM 14723 0 0 0 0 0 0 0 16-3584
+chrM 14724 0 0 0 0 0 0 0 16-3584
+chrM 14725 0 0 0 0 0 0 0 16-3584
+chrM 14726 0 0 0 0 0 0 0 16-3584
+chrM 14727 0 0 0 0 0 0 0 16-3584
+chrM 14728 0 0 0 0 0 0 0 16-3584
+chrM 14729 0 0 0 0 0 0 0 16-3584
+chrM 14730 0 0 0 0 0 0 0 16-3584
+chrM 14731 0 0 0 0 0 0 0 16-3584
+chrM 14732 0 0 0 0 0 0 0 16-3584
+chrM 14733 0 0 0 0 0 0 0 16-3584
+chrM 14734 0 0 0 0 0 0 0 16-3584
+chrM 14735 0 0 0 0 0 0 0 16-3584
+chrM 14736 0 0 0 0 0 0 0 16-3584
+chrM 14737 0 0 0 0 0 0 0 16-3584
+chrM 14738 0 0 0 0 0 0 0 16-3584
+chrM 14739 0 0 0 0 0 0 0 16-3584
+chrM 14740 0 0 0 0 0 0 0 16-3584
+chrM 14741 0 0 0 0 0 0 0 16-3584
+chrM 14742 0 0 0 0 0 0 0 16-3584
+chrM 14743 0 0 0 0 0 0 0 16-3584
+chrM 14744 0 0 0 0 0 0 0 16-3584
+chrM 14745 0 0 0 0 0 0 0 16-3584
+chrM 14746 0 0 0 0 0 0 0 16-3584
+chrM 14747 0 0 0 0 0 0 0 16-3584
+chrM 14748 0 0 0 0 0 0 0 16-3584
+chrM 14749 0 0 0 0 0 0 0 16-3584
+chrM 14750 0 0 0 0 0 0 0 16-3584
+chrM 14751 0 0 0 0 0 0 0 16-3584
+chrM 14752 0 0 0 0 0 0 0 16-3584
+chrM 14753 0 0 0 0 0 0 0 16-3584
+chrM 14754 0 0 0 0 0 0 0 16-3584
+chrM 14755 0 0 0 0 0 0 0 16-3584
+chrM 14756 0 0 0 0 0 0 0 16-3584
+chrM 14757 0 0 0 0 0 0 0 16-3584
+chrM 14758 0 0 0 0 0 0 0 16-3584
+chrM 14759 0 0 0 0 0 0 0 16-3584
+chrM 14760 0 0 0 0 0 0 0 16-3584
+chrM 14761 0 0 0 0 0 0 0 16-3584
+chrM 14762 0 0 0 0 0 0 0 16-3584
+chrM 14763 0 0 0 0 0 0 0 16-3584
+chrM 14764 0 0 0 0 0 0 0 16-3584
+chrM 14765 0 0 0 0 0 0 0 16-3584
+chrM 14766 0 0 0 0 0 0 0 16-3584
+chrM 14767 0 0 0 0 0 0 0 16-3584
+chrM 14768 0 0 0 0 0 0 0 16-3584
+chrM 14769 0 0 0 0 0 0 0 16-3584
+chrM 14770 0 0 0 0 0 0 0 16-3584
+chrM 14771 0 0 0 0 0 0 0 16-3584
+chrM 14772 0 0 0 0 0 0 0 16-3584
+chrM 14773 0 0 0 0 0 0 0 16-3584
+chrM 14774 0 0 0 0 0 0 0 16-3584
+chrM 14775 0 0 0 0 0 0 0 16-3584
+chrM 14776 0 0 0 0 0 0 0 16-3584
+chrM 14777 0 0 0 0 0 0 0 16-3584
+chrM 14778 0 0 0 0 0 0 0 16-3584
+chrM 14779 0 0 0 0 0 0 0 16-3584
+chrM 14780 0 0 0 0 0 0 0 16-3584
+chrM 14781 0 0 0 0 0 0 0 16-3584
+chrM 14782 0 0 0 0 0 0 0 16-3584
+chrM 14783 0 0 0 0 0 0 0 16-3584
+chrM 14784 0 0 0 0 0 0 0 16-3584
+chrM 14785 0 0 0 0 0 0 0 16-3584
+chrM 14786 0 0 0 0 0 0 0 16-3584
+chrM 14787 0 0 0 0 0 0 0 16-3584
+chrM 14788 0 0 0 0 0 0 0 16-3584
+chrM 14789 0 0 0 0 0 0 0 16-3584
+chrM 14790 0 0 0 0 0 0 0 16-3584
+chrM 14791 0 0 0 0 0 0 0 16-3584
+chrM 14792 0 0 0 0 0 0 0 16-3584
+chrM 14793 0 0 0 0 0 0 0 16-3584
+chrM 14794 1 0 0 1 0 0 0 16-3584
+chrM 14795 1 0 0 1 0 0 0 16-3584
+chrM 14796 1 0 0 0 1 0 0 16-3584
+chrM 14797 1 1 0 0 0 0 0 16-3584
+chrM 14798 1 1 0 0 0 0 0 16-3584
+chrM 14799 1 1 0 0 0 0 0 16-3584
+chrM 14800 1 0 1 0 0 0 0 16-3584
+chrM 14801 1 0 1 0 0 0 0 16-3584
+chrM 14802 1 0 0 1 0 0 0 16-3584
+chrM 14803 1 0 0 0 1 0 0 16-3584
+chrM 14804 1 0 0 0 1 0 0 16-3584
+chrM 14805 1 0 1 0 0 0 0 16-3584
+chrM 14806 1 0 1 0 0 0 0 16-3584
+chrM 14807 1 0 1 0 0 0 0 16-3584
+chrM 14808 1 0 0 0 1 0 0 16-3584
+chrM 14809 1 0 0 0 1 0 0 16-3584
+chrM 14810 1 0 0 1 0 0 0 16-3584
+chrM 14811 1 0 0 1 0 0 0 16-3584
+chrM 14812 1 0 1 0 0 0 0 16-3584
+chrM 14813 1 0 0 0 1 0 0 16-3584
+chrM 14814 1 0 1 0 0 0 0 16-3584
+chrM 14815 1 0 0 1 0 0 0 16-3584
+chrM 14816 1 0 1 0 0 0 0 16-3584
+chrM 14817 1 0 0 1 0 0 0 16-3584
+chrM 14818 1 1 0 0 0 0 0 16-3584
+chrM 14819 1 0 0 1 0 0 0 16-3584
+chrM 14820 2 0 1 0 1 0 0 16-3584
+chrM 14821 2 0 1 0 1 0 0 16-3584
+chrM 14822 2 0 1 0 1 0 0 16-3584
+chrM 14823 2 0 1 1 0 0 0 16-3584
+chrM 14824 2 1 1 0 0 0 0 16-3584
+chrM 14825 2 0 0 1 1 0 0 16-3584
+chrM 14826 2 0 1 1 0 0 0 16-3584
+chrM 14827 2 1 0 1 0 0 0 16-3584
+chrM 14828 2 0 1 0 1 0 0 16-3584
+chrM 14829 2 1 1 0 0 0 0 16-3584
+chrM 14830 2 0 0 2 0 0 0 16-3584
+chrM 14831 2 0 0 1 1 0 0 16-3584
+chrM 14832 2 0 1 1 0 0 0 16-3584
+chrM 14833 2 0 2 0 0 0 0 16-3584
+chrM 14834 2 1 0 1 0 0 0 16-3584
+chrM 14835 2 1 0 1 0 0 0 16-3584
+chrM 14836 2 1 1 0 0 0 0 16-3584
+chrM 14837 2 0 1 1 0 0 0 16-3584
+chrM 14838 2 1 0 1 0 0 0 16-3584
+chrM 14839 2 0 1 1 0 0 0 16-3584
+chrM 14840 2 0 2 0 0 0 0 16-3584
+chrM 14841 2 0 0 2 0 0 0 16-3584
+chrM 14842 2 0 1 0 1 0 0 16-3584
+chrM 14843 2 0 2 0 0 0 0 16-3584
+chrM 14844 2 0 1 0 1 0 0 16-3584
+chrM 14845 2 1 1 0 0 0 0 16-3584
+chrM 14846 2 1 1 0 0 0 0 16-3584
+chrM 14847 2 2 0 0 0 0 0 16-3584
+chrM 14848 2 1 1 0 0 0 0 16-3584
+chrM 14849 2 0 0 2 0 0 0 16-3584
+chrM 14850 2 0 0 2 0 0 0 16-3584
+chrM 14851 2 1 1 0 0 0 0 16-3584
+chrM 14852 2 0 1 0 1 0 0 16-3584
+chrM 14853 2 0 0 0 2 0 0 16-3584
+chrM 14854 2 0 2 0 0 0 0 16-3584
+chrM 14855 2 2 0 0 0 0 0 16-3584
+chrM 14856 2 1 0 1 0 0 0 16-3584
+chrM 14857 2 0 1 0 1 0 0 16-3584
+chrM 14858 2 0 0 1 1 0 0 16-3584
+chrM 14859 2 0 1 1 0 0 0 16-3584
+chrM 14860 2 0 1 1 0 0 0 16-3584
+chrM 14861 2 0 1 1 0 0 0 16-3584
+chrM 14862 2 1 1 0 0 0 0 16-3584
+chrM 14863 2 0 0 2 0 0 0 16-3584
+chrM 14864 2 2 0 0 0 0 0 16-3584
+chrM 14865 2 1 1 0 0 0 0 16-3584
+chrM 14866 2 0 1 1 0 0 0 16-3584
+chrM 14867 2 0 2 0 0 0 0 16-3584
+chrM 14868 2 0 0 0 2 0 0 16-3584
+chrM 14869 2 1 1 0 0 0 0 16-3584
+chrM 14870 2 1 0 1 0 0 0 16-3584
+chrM 14871 2 0 2 0 0 0 0 16-3584
+chrM 14872 2 1 0 0 1 0 0 16-3584
+chrM 14873 2 1 0 1 0 0 0 16-3584
+chrM 14874 2 0 0 1 1 0 0 16-3584
+chrM 14875 2 1 0 0 1 0 0 16-3584
+chrM 14876 2 0 2 0 0 0 0 16-3584
+chrM 14877 2 0 2 0 0 0 0 16-3584
+chrM 14878 2 0 0 2 0 0 0 16-3584
+chrM 14879 2 0 1 1 0 0 0 16-3584
+chrM 14880 2 0 0 2 0 0 0 16-3584
+chrM 14881 2 0 0 0 2 0 0 16-3584
+chrM 14882 2 0 0 2 0 0 0 16-3584
+chrM 14883 2 1 0 0 1 0 0 16-3584
+chrM 14884 2 0 1 0 1 0 0 16-3584
+chrM 14885 2 0 1 1 0 0 0 16-3584
+chrM 14886 2 0 0 1 1 0 0 16-3584
+chrM 14887 2 0 1 1 0 0 0 16-3584
+chrM 14888 2 0 0 1 1 0 0 16-3584
+chrM 14889 2 0 1 0 1 0 0 16-3584
+chrM 14890 2 1 0 0 1 0 0 16-3584
+chrM 14891 2 0 1 1 0 0 0 16-3584
+chrM 14892 2 0 1 0 1 0 0 16-3584
+chrM 14893 2 1 0 1 0 0 0 16-3584
+chrM 14894 2 1 0 0 1 0 0 16-3584
+chrM 14895 2 2 0 0 0 0 0 16-3584
+chrM 14896 2 0 2 0 0 0 0 16-3584
+chrM 14897 2 0 1 1 0 0 0 16-3584
+chrM 14898 2 0 1 0 1 0 0 16-3584
+chrM 14899 2 0 0 0 2 0 0 16-3584
+chrM 14900 2 1 0 0 1 0 0 16-3584
+chrM 14901 2 1 0 0 1 0 0 16-3584
+chrM 14902 2 0 0 2 0 0 0 16-3584
+chrM 14903 2 1 0 0 1 0 0 16-3584
+chrM 14904 2 1 0 0 1 0 0 16-3584
+chrM 14905 2 1 1 0 0 0 0 16-3584
+chrM 14906 2 0 1 0 1 0 0 16-3584
+chrM 14907 2 0 0 2 0 0 0 16-3584
+chrM 14908 2 0 0 1 1 0 0 16-3584
+chrM 14909 2 0 0 1 1 0 0 16-3584
+chrM 14910 2 0 1 0 1 0 0 16-3584
+chrM 14911 2 1 0 0 1 0 0 16-3584
+chrM 14912 2 1 0 0 1 0 0 16-3584
+chrM 14913 2 2 0 0 0 0 0 16-3584
+chrM 14914 2 1 0 0 1 0 0 16-3584
+chrM 14915 2 1 0 0 1 0 0 16-3584
+chrM 14916 2 1 1 0 0 0 0 16-3584
+chrM 14917 2 0 1 1 0 0 0 16-3584
+chrM 14918 2 1 0 0 1 0 0 16-3584
+chrM 14919 2 1 0 1 0 0 0 16-3584
+chrM 14920 2 0 1 1 0 0 0 16-3584
+chrM 14921 2 1 0 0 1 0 0 16-3584
+chrM 14922 2 0 1 0 1 0 0 16-3584
+chrM 14923 2 0 1 1 0 0 0 16-3584
+chrM 14924 2 0 0 2 0 0 0 16-3584
+chrM 14925 2 1 0 0 1 0 0 16-3584
+chrM 14926 2 0 1 1 0 0 0 16-3584
+chrM 14927 2 0 1 0 1 0 0 16-3584
+chrM 14928 2 0 1 0 1 0 0 16-3584
+chrM 14929 2 0 1 0 1 0 0 16-3584
+chrM 14930 2 1 1 0 0 0 0 16-3584
+chrM 14931 2 1 0 0 1 0 0 16-3584
+chrM 14932 2 0 1 0 1 0 0 16-3584
+chrM 14933 2 0 0 0 2 0 0 16-3584
+chrM 14934 2 1 1 0 0 0 0 16-3584
+chrM 14935 2 0 1 1 0 0 0 16-3584
+chrM 14936 2 1 0 1 0 0 0 16-3584
+chrM 14937 2 1 0 1 0 0 0 16-3584
+chrM 14938 2 1 0 0 1 0 0 16-3584
+chrM 14939 2 1 1 0 0 0 0 16-3584
+chrM 14940 1 0 0 0 1 0 0 16-3584
+chrM 14941 1 0 1 0 0 0 0 16-3584
+chrM 14942 1 0 0 0 1 0 0 16-3584
+chrM 14943 1 0 0 1 0 0 0 16-3584
+chrM 14944 1 0 0 1 0 0 0 16-3584
+chrM 14945 1 0 1 0 0 0 0 16-3584
+chrM 14946 1 0 0 1 0 0 0 16-3584
+chrM 14947 1 0 0 1 0 0 0 16-3584
+chrM 14948 1 1 0 0 0 0 0 16-3584
+chrM 14949 1 1 0 0 0 0 0 16-3584
+chrM 14950 1 0 1 0 0 0 0 16-3584
+chrM 14951 1 1 0 0 0 0 0 16-3584
+chrM 14952 1 0 0 0 1 0 0 16-3584
+chrM 14953 1 0 0 1 0 0 0 16-3584
+chrM 14954 1 0 0 1 0 0 0 16-3584
+chrM 14955 1 0 0 1 0 0 0 16-3584
+chrM 14956 1 0 1 0 0 0 0 16-3584
+chrM 14957 1 0 0 0 1 0 0 16-3584
+chrM 14958 1 1 0 0 0 0 0 16-3584
+chrM 14959 1 1 0 0 0 0 0 16-3584
+chrM 14960 1 0 1 0 0 0 0 16-3584
+chrM 14961 1 1 0 0 0 0 0 16-3584
+chrM 14962 1 0 0 1 0 0 0 16-3584
+chrM 14963 1 1 0 0 0 0 0 16-3584
+chrM 14964 1 0 1 0 0 0 0 16-3584
+chrM 14965 0 0 0 0 0 0 0 16-3584
+chrM 14966 0 0 0 0 0 0 0 16-3584
+chrM 14967 0 0 0 0 0 0 0 16-3584
+chrM 14968 0 0 0 0 0 0 0 16-3584
+chrM 14969 0 0 0 0 0 0 0 16-3584
+chrM 14970 0 0 0 0 0 0 0 16-3584
+chrM 14971 0 0 0 0 0 0 0 16-3584
+chrM 14972 0 0 0 0 0 0 0 16-3584
+chrM 14973 0 0 0 0 0 0 0 16-3584
+chrM 14974 0 0 0 0 0 0 0 16-3584
+chrM 14975 0 0 0 0 0 0 0 16-3584
+chrM 14976 0 0 0 0 0 0 0 16-3584
+chrM 14977 0 0 0 0 0 0 0 16-3584
+chrM 14978 0 0 0 0 0 0 0 16-3584
+chrM 14979 0 0 0 0 0 0 0 16-3584
+chrM 14980 0 0 0 0 0 0 0 16-3584
+chrM 14981 0 0 0 0 0 0 0 16-3584
+chrM 14982 0 0 0 0 0 0 0 16-3584
+chrM 14983 0 0 0 0 0 0 0 16-3584
+chrM 14984 0 0 0 0 0 0 0 16-3584
+chrM 14985 0 0 0 0 0 0 0 16-3584
+chrM 14986 0 0 0 0 0 0 0 16-3584
+chrM 14987 0 0 0 0 0 0 0 16-3584
+chrM 14988 0 0 0 0 0 0 0 16-3584
+chrM 14989 0 0 0 0 0 0 0 16-3584
+chrM 14990 0 0 0 0 0 0 0 16-3584
+chrM 14991 0 0 0 0 0 0 0 16-3584
+chrM 14992 0 0 0 0 0 0 0 16-3584
+chrM 14993 0 0 0 0 0 0 0 16-3584
+chrM 14994 0 0 0 0 0 0 0 16-3584
+chrM 14995 0 0 0 0 0 0 0 16-3584
+chrM 14996 0 0 0 0 0 0 0 16-3584
+chrM 14997 0 0 0 0 0 0 0 16-3584
+chrM 14998 0 0 0 0 0 0 0 16-3584
+chrM 14999 0 0 0 0 0 0 0 16-3584
+chrM 15000 0 0 0 0 0 0 0 16-3584
+chrM 15001 0 0 0 0 0 0 0 16-3584
+chrM 15002 0 0 0 0 0 0 0 16-3584
+chrM 15003 0 0 0 0 0 0 0 16-3584
+chrM 15004 0 0 0 0 0 0 0 16-3584
+chrM 15005 0 0 0 0 0 0 0 16-3584
+chrM 15006 0 0 0 0 0 0 0 16-3584
+chrM 15007 0 0 0 0 0 0 0 16-3584
+chrM 15008 0 0 0 0 0 0 0 16-3584
+chrM 15009 0 0 0 0 0 0 0 16-3584
+chrM 15010 0 0 0 0 0 0 0 16-3584
+chrM 15011 0 0 0 0 0 0 0 16-3584
+chrM 15012 0 0 0 0 0 0 0 16-3584
+chrM 15013 0 0 0 0 0 0 0 16-3584
+chrM 15014 0 0 0 0 0 0 0 16-3584
+chrM 15015 0 0 0 0 0 0 0 16-3584
+chrM 15016 0 0 0 0 0 0 0 16-3584
+chrM 15017 0 0 0 0 0 0 0 16-3584
+chrM 15018 0 0 0 0 0 0 0 16-3584
+chrM 15019 0 0 0 0 0 0 0 16-3584
+chrM 15020 0 0 0 0 0 0 0 16-3584
+chrM 15021 0 0 0 0 0 0 0 16-3584
+chrM 15022 0 0 0 0 0 0 0 16-3584
+chrM 15023 0 0 0 0 0 0 0 16-3584
+chrM 15024 0 0 0 0 0 0 0 16-3584
+chrM 15025 0 0 0 0 0 0 0 16-3584
+chrM 15026 0 0 0 0 0 0 0 16-3584
+chrM 15027 0 0 0 0 0 0 0 16-3584
+chrM 15028 0 0 0 0 0 0 0 16-3584
+chrM 15029 0 0 0 0 0 0 0 16-3584
+chrM 15030 0 0 0 0 0 0 0 16-3584
+chrM 15031 0 0 0 0 0 0 0 16-3584
+chrM 15032 0 0 0 0 0 0 0 16-3584
+chrM 15033 0 0 0 0 0 0 0 16-3584
+chrM 15034 0 0 0 0 0 0 0 16-3584
+chrM 15035 0 0 0 0 0 0 0 16-3584
+chrM 15036 0 0 0 0 0 0 0 16-3584
+chrM 15037 0 0 0 0 0 0 0 16-3584
+chrM 15038 0 0 0 0 0 0 0 16-3584
+chrM 15039 0 0 0 0 0 0 0 16-3584
+chrM 15040 0 0 0 0 0 0 0 16-3584
+chrM 15041 0 0 0 0 0 0 0 16-3584
+chrM 15042 0 0 0 0 0 0 0 16-3584
+chrM 15043 0 0 0 0 0 0 0 16-3584
+chrM 15044 0 0 0 0 0 0 0 16-3584
+chrM 15045 0 0 0 0 0 0 0 16-3584
+chrM 15046 0 0 0 0 0 0 0 16-3584
+chrM 15047 0 0 0 0 0 0 0 16-3584
+chrM 15048 0 0 0 0 0 0 0 16-3584
+chrM 15049 0 0 0 0 0 0 0 16-3584
+chrM 15050 0 0 0 0 0 0 0 16-3584
+chrM 15051 0 0 0 0 0 0 0 16-3584
+chrM 15052 0 0 0 0 0 0 0 16-3584
+chrM 15053 0 0 0 0 0 0 0 16-3584
+chrM 15054 0 0 0 0 0 0 0 16-3584
+chrM 15055 0 0 0 0 0 0 0 16-3584
+chrM 15056 0 0 0 0 0 0 0 16-3584
+chrM 15057 0 0 0 0 0 0 0 16-3584
+chrM 15058 0 0 0 0 0 0 0 16-3584
+chrM 15059 0 0 0 0 0 0 0 16-3584
+chrM 15060 0 0 0 0 0 0 0 16-3584
+chrM 15061 0 0 0 0 0 0 0 16-3584
+chrM 15062 0 0 0 0 0 0 0 16-3584
+chrM 15063 0 0 0 0 0 0 0 16-3584
+chrM 15064 0 0 0 0 0 0 0 16-3584
+chrM 15065 0 0 0 0 0 0 0 16-3584
+chrM 15066 0 0 0 0 0 0 0 16-3584
+chrM 15067 0 0 0 0 0 0 0 16-3584
+chrM 15068 0 0 0 0 0 0 0 16-3584
+chrM 15069 0 0 0 0 0 0 0 16-3584
+chrM 15070 0 0 0 0 0 0 0 16-3584
+chrM 15071 0 0 0 0 0 0 0 16-3584
+chrM 15072 0 0 0 0 0 0 0 16-3584
+chrM 15073 0 0 0 0 0 0 0 16-3584
+chrM 15074 0 0 0 0 0 0 0 16-3584
+chrM 15075 0 0 0 0 0 0 0 16-3584
+chrM 15076 0 0 0 0 0 0 0 16-3584
+chrM 15077 0 0 0 0 0 0 0 16-3584
+chrM 15078 0 0 0 0 0 0 0 16-3584
+chrM 15079 0 0 0 0 0 0 0 16-3584
+chrM 15080 0 0 0 0 0 0 0 16-3584
+chrM 15081 0 0 0 0 0 0 0 16-3584
+chrM 15082 0 0 0 0 0 0 0 16-3584
+chrM 15083 0 0 0 0 0 0 0 16-3584
+chrM 15084 0 0 0 0 0 0 0 16-3584
+chrM 15085 0 0 0 0 0 0 0 16-3584
+chrM 15086 0 0 0 0 0 0 0 16-3584
+chrM 15087 0 0 0 0 0 0 0 16-3584
+chrM 15088 0 0 0 0 0 0 0 16-3584
+chrM 15089 0 0 0 0 0 0 0 16-3584
+chrM 15090 0 0 0 0 0 0 0 16-3584
+chrM 15091 0 0 0 0 0 0 0 16-3584
+chrM 15092 0 0 0 0 0 0 0 16-3584
+chrM 15093 0 0 0 0 0 0 0 16-3584
+chrM 15094 0 0 0 0 0 0 0 16-3584
+chrM 15095 0 0 0 0 0 0 0 16-3584
+chrM 15096 0 0 0 0 0 0 0 16-3584
+chrM 15097 0 0 0 0 0 0 0 16-3584
+chrM 15098 0 0 0 0 0 0 0 16-3584
+chrM 15099 0 0 0 0 0 0 0 16-3584
+chrM 15100 0 0 0 0 0 0 0 16-3584
+chrM 15101 0 0 0 0 0 0 0 16-3584
+chrM 15102 0 0 0 0 0 0 0 16-3584
+chrM 15103 0 0 0 0 0 0 0 16-3584
+chrM 15104 0 0 0 0 0 0 0 16-3584
+chrM 15105 0 0 0 0 0 0 0 16-3584
+chrM 15106 0 0 0 0 0 0 0 16-3584
+chrM 15107 0 0 0 0 0 0 0 16-3584
+chrM 15108 0 0 0 0 0 0 0 16-3584
+chrM 15109 0 0 0 0 0 0 0 16-3584
+chrM 15110 0 0 0 0 0 0 0 16-3584
+chrM 15111 0 0 0 0 0 0 0 16-3584
+chrM 15112 0 0 0 0 0 0 0 16-3584
+chrM 15113 0 0 0 0 0 0 0 16-3584
+chrM 15114 0 0 0 0 0 0 0 16-3584
+chrM 15115 0 0 0 0 0 0 0 16-3584
+chrM 15116 0 0 0 0 0 0 0 16-3584
+chrM 15117 0 0 0 0 0 0 0 16-3584
+chrM 15118 0 0 0 0 0 0 0 16-3584
+chrM 15119 0 0 0 0 0 0 0 16-3584
+chrM 15120 0 0 0 0 0 0 0 16-3584
+chrM 15121 0 0 0 0 0 0 0 16-3584
+chrM 15122 0 0 0 0 0 0 0 16-3584
+chrM 15123 0 0 0 0 0 0 0 16-3584
+chrM 15124 0 0 0 0 0 0 0 16-3584
+chrM 15125 0 0 0 0 0 0 0 16-3584
+chrM 15126 0 0 0 0 0 0 0 16-3584
+chrM 15127 0 0 0 0 0 0 0 16-3584
+chrM 15128 0 0 0 0 0 0 0 16-3584
+chrM 15129 0 0 0 0 0 0 0 16-3584
+chrM 15130 0 0 0 0 0 0 0 16-3584
+chrM 15131 0 0 0 0 0 0 0 16-3584
+chrM 15132 0 0 0 0 0 0 0 16-3584
+chrM 15133 0 0 0 0 0 0 0 16-3584
+chrM 15134 0 0 0 0 0 0 0 16-3584
+chrM 15135 0 0 0 0 0 0 0 16-3584
+chrM 15136 0 0 0 0 0 0 0 16-3584
+chrM 15137 0 0 0 0 0 0 0 16-3584
+chrM 15138 0 0 0 0 0 0 0 16-3584
+chrM 15139 0 0 0 0 0 0 0 16-3584
+chrM 15140 0 0 0 0 0 0 0 16-3584
+chrM 15141 0 0 0 0 0 0 0 16-3584
+chrM 15142 0 0 0 0 0 0 0 16-3584
+chrM 15143 0 0 0 0 0 0 0 16-3584
+chrM 15144 0 0 0 0 0 0 0 16-3584
+chrM 15145 0 0 0 0 0 0 0 16-3584
+chrM 15146 0 0 0 0 0 0 0 16-3584
+chrM 15147 0 0 0 0 0 0 0 16-3584
+chrM 15148 0 0 0 0 0 0 0 16-3584
+chrM 15149 0 0 0 0 0 0 0 16-3584
+chrM 15150 0 0 0 0 0 0 0 16-3584
+chrM 15151 0 0 0 0 0 0 0 16-3584
+chrM 15152 0 0 0 0 0 0 0 16-3584
+chrM 15153 0 0 0 0 0 0 0 16-3584
+chrM 15154 0 0 0 0 0 0 0 16-3584
+chrM 15155 0 0 0 0 0 0 0 16-3584
+chrM 15156 0 0 0 0 0 0 0 16-3584
+chrM 15157 0 0 0 0 0 0 0 16-3584
+chrM 15158 0 0 0 0 0 0 0 16-3584
+chrM 15159 0 0 0 0 0 0 0 16-3584
+chrM 15160 0 0 0 0 0 0 0 16-3584
+chrM 15161 0 0 0 0 0 0 0 16-3584
+chrM 15162 0 0 0 0 0 0 0 16-3584
+chrM 15163 0 0 0 0 0 0 0 16-3584
+chrM 15164 0 0 0 0 0 0 0 16-3584
+chrM 15165 0 0 0 0 0 0 0 16-3584
+chrM 15166 0 0 0 0 0 0 0 16-3584
+chrM 15167 0 0 0 0 0 0 0 16-3584
+chrM 15168 0 0 0 0 0 0 0 16-3584
+chrM 15169 0 0 0 0 0 0 0 16-3584
+chrM 15170 0 0 0 0 0 0 0 16-3584
+chrM 15171 0 0 0 0 0 0 0 16-3584
+chrM 15172 0 0 0 0 0 0 0 16-3584
+chrM 15173 0 0 0 0 0 0 0 16-3584
+chrM 15174 0 0 0 0 0 0 0 16-3584
+chrM 15175 0 0 0 0 0 0 0 16-3584
+chrM 15176 0 0 0 0 0 0 0 16-3584
+chrM 15177 0 0 0 0 0 0 0 16-3584
+chrM 15178 0 0 0 0 0 0 0 16-3584
+chrM 15179 0 0 0 0 0 0 0 16-3584
+chrM 15180 0 0 0 0 0 0 0 16-3584
+chrM 15181 0 0 0 0 0 0 0 16-3584
+chrM 15182 0 0 0 0 0 0 0 16-3584
+chrM 15183 0 0 0 0 0 0 0 16-3584
+chrM 15184 0 0 0 0 0 0 0 16-3584
+chrM 15185 0 0 0 0 0 0 0 16-3584
+chrM 15186 0 0 0 0 0 0 0 16-3584
+chrM 15187 0 0 0 0 0 0 0 16-3584
+chrM 15188 0 0 0 0 0 0 0 16-3584
+chrM 15189 0 0 0 0 0 0 0 16-3584
+chrM 15190 0 0 0 0 0 0 0 16-3584
+chrM 15191 0 0 0 0 0 0 0 16-3584
+chrM 15192 0 0 0 0 0 0 0 16-3584
+chrM 15193 0 0 0 0 0 0 0 16-3584
+chrM 15194 0 0 0 0 0 0 0 16-3584
+chrM 15195 0 0 0 0 0 0 0 16-3584
+chrM 15196 0 0 0 0 0 0 0 16-3584
+chrM 15197 0 0 0 0 0 0 0 16-3584
+chrM 15198 0 0 0 0 0 0 0 16-3584
+chrM 15199 0 0 0 0 0 0 0 16-3584
+chrM 15200 0 0 0 0 0 0 0 16-3584
+chrM 15201 0 0 0 0 0 0 0 16-3584
+chrM 15202 0 0 0 0 0 0 0 16-3584
+chrM 15203 0 0 0 0 0 0 0 16-3584
+chrM 15204 0 0 0 0 0 0 0 16-3584
+chrM 15205 0 0 0 0 0 0 0 16-3584
+chrM 15206 0 0 0 0 0 0 0 16-3584
+chrM 15207 0 0 0 0 0 0 0 16-3584
+chrM 15208 0 0 0 0 0 0 0 16-3584
+chrM 15209 0 0 0 0 0 0 0 16-3584
+chrM 15210 0 0 0 0 0 0 0 16-3584
+chrM 15211 0 0 0 0 0 0 0 16-3584
+chrM 15212 0 0 0 0 0 0 0 16-3584
+chrM 15213 0 0 0 0 0 0 0 16-3584
+chrM 15214 0 0 0 0 0 0 0 16-3584
+chrM 15215 0 0 0 0 0 0 0 16-3584
+chrM 15216 0 0 0 0 0 0 0 16-3584
+chrM 15217 0 0 0 0 0 0 0 16-3584
+chrM 15218 0 0 0 0 0 0 0 16-3584
+chrM 15219 0 0 0 0 0 0 0 16-3584
+chrM 15220 0 0 0 0 0 0 0 16-3584
+chrM 15221 0 0 0 0 0 0 0 16-3584
+chrM 15222 0 0 0 0 0 0 0 16-3584
+chrM 15223 0 0 0 0 0 0 0 16-3584
+chrM 15224 0 0 0 0 0 0 0 16-3584
+chrM 15225 0 0 0 0 0 0 0 16-3584
+chrM 15226 0 0 0 0 0 0 0 16-3584
+chrM 15227 0 0 0 0 0 0 0 16-3584
+chrM 15228 0 0 0 0 0 0 0 16-3584
+chrM 15229 0 0 0 0 0 0 0 16-3584
+chrM 15230 0 0 0 0 0 0 0 16-3584
+chrM 15231 0 0 0 0 0 0 0 16-3584
+chrM 15232 0 0 0 0 0 0 0 16-3584
+chrM 15233 0 0 0 0 0 0 0 16-3584
+chrM 15234 0 0 0 0 0 0 0 16-3584
+chrM 15235 0 0 0 0 0 0 0 16-3584
+chrM 15236 0 0 0 0 0 0 0 16-3584
+chrM 15237 0 0 0 0 0 0 0 16-3584
+chrM 15238 0 0 0 0 0 0 0 16-3584
+chrM 15239 0 0 0 0 0 0 0 16-3584
+chrM 15240 0 0 0 0 0 0 0 16-3584
+chrM 15241 0 0 0 0 0 0 0 16-3584
+chrM 15242 0 0 0 0 0 0 0 16-3584
+chrM 15243 0 0 0 0 0 0 0 16-3584
+chrM 15244 0 0 0 0 0 0 0 16-3584
+chrM 15245 0 0 0 0 0 0 0 16-3584
+chrM 15246 0 0 0 0 0 0 0 16-3584
+chrM 15247 0 0 0 0 0 0 0 16-3584
+chrM 15248 0 0 0 0 0 0 0 16-3584
+chrM 15249 0 0 0 0 0 0 0 16-3584
+chrM 15250 0 0 0 0 0 0 0 16-3584
+chrM 15251 0 0 0 0 0 0 0 16-3584
+chrM 15252 0 0 0 0 0 0 0 16-3584
+chrM 15253 0 0 0 0 0 0 0 16-3584
+chrM 15254 0 0 0 0 0 0 0 16-3584
+chrM 15255 0 0 0 0 0 0 0 16-3584
+chrM 15256 0 0 0 0 0 0 0 16-3584
+chrM 15257 0 0 0 0 0 0 0 16-3584
+chrM 15258 0 0 0 0 0 0 0 16-3584
+chrM 15259 0 0 0 0 0 0 0 16-3584
+chrM 15260 0 0 0 0 0 0 0 16-3584
+chrM 15261 0 0 0 0 0 0 0 16-3584
+chrM 15262 0 0 0 0 0 0 0 16-3584
+chrM 15263 0 0 0 0 0 0 0 16-3584
+chrM 15264 0 0 0 0 0 0 0 16-3584
+chrM 15265 0 0 0 0 0 0 0 16-3584
+chrM 15266 0 0 0 0 0 0 0 16-3584
+chrM 15267 0 0 0 0 0 0 0 16-3584
+chrM 15268 0 0 0 0 0 0 0 16-3584
+chrM 15269 0 0 0 0 0 0 0 16-3584
+chrM 15270 0 0 0 0 0 0 0 16-3584
+chrM 15271 0 0 0 0 0 0 0 16-3584
+chrM 15272 0 0 0 0 0 0 0 16-3584
+chrM 15273 0 0 0 0 0 0 0 16-3584
+chrM 15274 0 0 0 0 0 0 0 16-3584
+chrM 15275 0 0 0 0 0 0 0 16-3584
+chrM 15276 0 0 0 0 0 0 0 16-3584
+chrM 15277 0 0 0 0 0 0 0 16-3584
+chrM 15278 0 0 0 0 0 0 0 16-3584
+chrM 15279 0 0 0 0 0 0 0 16-3584
+chrM 15280 0 0 0 0 0 0 0 16-3584
+chrM 15281 0 0 0 0 0 0 0 16-3584
+chrM 15282 0 0 0 0 0 0 0 16-3584
+chrM 15283 0 0 0 0 0 0 0 16-3584
+chrM 15284 0 0 0 0 0 0 0 16-3584
+chrM 15285 0 0 0 0 0 0 0 16-3584
+chrM 15286 0 0 0 0 0 0 0 16-3584
+chrM 15287 0 0 0 0 0 0 0 16-3584
+chrM 15288 0 0 0 0 0 0 0 16-3584
+chrM 15289 0 0 0 0 0 0 0 16-3584
+chrM 15290 0 0 0 0 0 0 0 16-3584
+chrM 15291 0 0 0 0 0 0 0 16-3584
+chrM 15292 0 0 0 0 0 0 0 16-3584
+chrM 15293 0 0 0 0 0 0 0 16-3584
+chrM 15294 0 0 0 0 0 0 0 16-3584
+chrM 15295 0 0 0 0 0 0 0 16-3584
+chrM 15296 0 0 0 0 0 0 0 16-3584
+chrM 15297 0 0 0 0 0 0 0 16-3584
+chrM 15298 0 0 0 0 0 0 0 16-3584
+chrM 15299 0 0 0 0 0 0 0 16-3584
+chrM 15300 0 0 0 0 0 0 0 16-3584
+chrM 15301 0 0 0 0 0 0 0 16-3584
+chrM 15302 0 0 0 0 0 0 0 16-3584
+chrM 15303 0 0 0 0 0 0 0 16-3584
+chrM 15304 0 0 0 0 0 0 0 16-3584
+chrM 15305 0 0 0 0 0 0 0 16-3584
+chrM 15306 0 0 0 0 0 0 0 16-3584
+chrM 15307 0 0 0 0 0 0 0 16-3584
+chrM 15308 0 0 0 0 0 0 0 16-3584
+chrM 15309 0 0 0 0 0 0 0 16-3584
+chrM 15310 0 0 0 0 0 0 0 16-3584
+chrM 15311 0 0 0 0 0 0 0 16-3584
+chrM 15312 0 0 0 0 0 0 0 16-3584
+chrM 15313 0 0 0 0 0 0 0 16-3584
+chrM 15314 0 0 0 0 0 0 0 16-3584
+chrM 15315 0 0 0 0 0 0 0 16-3584
+chrM 15316 0 0 0 0 0 0 0 16-3584
+chrM 15317 0 0 0 0 0 0 0 16-3584
+chrM 15318 0 0 0 0 0 0 0 16-3584
+chrM 15319 0 0 0 0 0 0 0 16-3584
+chrM 15320 0 0 0 0 0 0 0 16-3584
+chrM 15321 0 0 0 0 0 0 0 16-3584
+chrM 15322 0 0 0 0 0 0 0 16-3584
+chrM 15323 0 0 0 0 0 0 0 16-3584
+chrM 15324 0 0 0 0 0 0 0 16-3584
+chrM 15325 0 0 0 0 0 0 0 16-3584
+chrM 15326 0 0 0 0 0 0 0 16-3584
+chrM 15327 0 0 0 0 0 0 0 16-3584
+chrM 15328 0 0 0 0 0 0 0 16-3584
+chrM 15329 0 0 0 0 0 0 0 16-3584
+chrM 15330 0 0 0 0 0 0 0 16-3584
+chrM 15331 0 0 0 0 0 0 0 16-3584
+chrM 15332 0 0 0 0 0 0 0 16-3584
+chrM 15333 0 0 0 0 0 0 0 16-3584
+chrM 15334 0 0 0 0 0 0 0 16-3584
+chrM 15335 0 0 0 0 0 0 0 16-3584
+chrM 15336 0 0 0 0 0 0 0 16-3584
+chrM 15337 0 0 0 0 0 0 0 16-3584
+chrM 15338 0 0 0 0 0 0 0 16-3584
+chrM 15339 0 0 0 0 0 0 0 16-3584
+chrM 15340 0 0 0 0 0 0 0 16-3584
+chrM 15341 0 0 0 0 0 0 0 16-3584
+chrM 15342 0 0 0 0 0 0 0 16-3584
+chrM 15343 0 0 0 0 0 0 0 16-3584
+chrM 15344 0 0 0 0 0 0 0 16-3584
+chrM 15345 0 0 0 0 0 0 0 16-3584
+chrM 15346 0 0 0 0 0 0 0 16-3584
+chrM 15347 0 0 0 0 0 0 0 16-3584
+chrM 15348 0 0 0 0 0 0 0 16-3584
+chrM 15349 0 0 0 0 0 0 0 16-3584
+chrM 15350 0 0 0 0 0 0 0 16-3584
+chrM 15351 0 0 0 0 0 0 0 16-3584
+chrM 15352 0 0 0 0 0 0 0 16-3584
+chrM 15353 0 0 0 0 0 0 0 16-3584
+chrM 15354 0 0 0 0 0 0 0 16-3584
+chrM 15355 0 0 0 0 0 0 0 16-3584
+chrM 15356 0 0 0 0 0 0 0 16-3584
+chrM 15357 0 0 0 0 0 0 0 16-3584
+chrM 15358 0 0 0 0 0 0 0 16-3584
+chrM 15359 0 0 0 0 0 0 0 16-3584
+chrM 15360 0 0 0 0 0 0 0 16-3584
+chrM 15361 0 0 0 0 0 0 0 16-3584
+chrM 15362 0 0 0 0 0 0 0 16-3584
+chrM 15363 0 0 0 0 0 0 0 16-3584
+chrM 15364 0 0 0 0 0 0 0 16-3584
+chrM 15365 0 0 0 0 0 0 0 16-3584
+chrM 15366 0 0 0 0 0 0 0 16-3584
+chrM 15367 0 0 0 0 0 0 0 16-3584
+chrM 15368 0 0 0 0 0 0 0 16-3584
+chrM 15369 0 0 0 0 0 0 0 16-3584
+chrM 15370 0 0 0 0 0 0 0 16-3584
+chrM 15371 0 0 0 0 0 0 0 16-3584
+chrM 15372 0 0 0 0 0 0 0 16-3584
+chrM 15373 0 0 0 0 0 0 0 16-3584
+chrM 15374 0 0 0 0 0 0 0 16-3584
+chrM 15375 0 0 0 0 0 0 0 16-3584
+chrM 15376 0 0 0 0 0 0 0 16-3584
+chrM 15377 0 0 0 0 0 0 0 16-3584
+chrM 15378 0 0 0 0 0 0 0 16-3584
+chrM 15379 0 0 0 0 0 0 0 16-3584
+chrM 15380 0 0 0 0 0 0 0 16-3584
+chrM 15381 0 0 0 0 0 0 0 16-3584
+chrM 15382 0 0 0 0 0 0 0 16-3584
+chrM 15383 0 0 0 0 0 0 0 16-3584
+chrM 15384 0 0 0 0 0 0 0 16-3584
+chrM 15385 0 0 0 0 0 0 0 16-3584
+chrM 15386 0 0 0 0 0 0 0 16-3584
+chrM 15387 0 0 0 0 0 0 0 16-3584
+chrM 15388 0 0 0 0 0 0 0 16-3584
+chrM 15389 0 0 0 0 0 0 0 16-3584
+chrM 15390 0 0 0 0 0 0 0 16-3584
+chrM 15391 0 0 0 0 0 0 0 16-3584
+chrM 15392 0 0 0 0 0 0 0 16-3584
+chrM 15393 0 0 0 0 0 0 0 16-3584
+chrM 15394 0 0 0 0 0 0 0 16-3584
+chrM 15395 0 0 0 0 0 0 0 16-3584
+chrM 15396 0 0 0 0 0 0 0 16-3584
+chrM 15397 0 0 0 0 0 0 0 16-3584
+chrM 15398 0 0 0 0 0 0 0 16-3584
+chrM 15399 0 0 0 0 0 0 0 16-3584
+chrM 15400 0 0 0 0 0 0 0 16-3584
+chrM 15401 0 0 0 0 0 0 0 16-3584
+chrM 15402 0 0 0 0 0 0 0 16-3584
+chrM 15403 0 0 0 0 0 0 0 16-3584
+chrM 15404 0 0 0 0 0 0 0 16-3584
+chrM 15405 0 0 0 0 0 0 0 16-3584
+chrM 15406 0 0 0 0 0 0 0 16-3584
+chrM 15407 0 0 0 0 0 0 0 16-3584
+chrM 15408 0 0 0 0 0 0 0 16-3584
+chrM 15409 0 0 0 0 0 0 0 16-3584
+chrM 15410 0 0 0 0 0 0 0 16-3584
+chrM 15411 0 0 0 0 0 0 0 16-3584
+chrM 15412 0 0 0 0 0 0 0 16-3584
+chrM 15413 0 0 0 0 0 0 0 16-3584
+chrM 15414 0 0 0 0 0 0 0 16-3584
+chrM 15415 0 0 0 0 0 0 0 16-3584
+chrM 15416 0 0 0 0 0 0 0 16-3584
+chrM 15417 0 0 0 0 0 0 0 16-3584
+chrM 15418 0 0 0 0 0 0 0 16-3584
+chrM 15419 0 0 0 0 0 0 0 16-3584
+chrM 15420 0 0 0 0 0 0 0 16-3584
+chrM 15421 0 0 0 0 0 0 0 16-3584
+chrM 15422 0 0 0 0 0 0 0 16-3584
+chrM 15423 0 0 0 0 0 0 0 16-3584
+chrM 15424 0 0 0 0 0 0 0 16-3584
+chrM 15425 0 0 0 0 0 0 0 16-3584
+chrM 15426 0 0 0 0 0 0 0 16-3584
+chrM 15427 0 0 0 0 0 0 0 16-3584
+chrM 15428 0 0 0 0 0 0 0 16-3584
+chrM 15429 0 0 0 0 0 0 0 16-3584
+chrM 15430 0 0 0 0 0 0 0 16-3584
+chrM 15431 0 0 0 0 0 0 0 16-3584
+chrM 15432 0 0 0 0 0 0 0 16-3584
+chrM 15433 0 0 0 0 0 0 0 16-3584
+chrM 15434 0 0 0 0 0 0 0 16-3584
+chrM 15435 0 0 0 0 0 0 0 16-3584
+chrM 15436 0 0 0 0 0 0 0 16-3584
+chrM 15437 0 0 0 0 0 0 0 16-3584
+chrM 15438 0 0 0 0 0 0 0 16-3584
+chrM 15439 0 0 0 0 0 0 0 16-3584
+chrM 15440 0 0 0 0 0 0 0 16-3584
+chrM 15441 0 0 0 0 0 0 0 16-3584
+chrM 15442 0 0 0 0 0 0 0 16-3584
+chrM 15443 0 0 0 0 0 0 0 16-3584
+chrM 15444 0 0 0 0 0 0 0 16-3584
+chrM 15445 0 0 0 0 0 0 0 16-3584
+chrM 15446 0 0 0 0 0 0 0 16-3584
+chrM 15447 0 0 0 0 0 0 0 16-3584
+chrM 15448 0 0 0 0 0 0 0 16-3584
+chrM 15449 0 0 0 0 0 0 0 16-3584
+chrM 15450 0 0 0 0 0 0 0 16-3584
+chrM 15451 0 0 0 0 0 0 0 16-3584
+chrM 15452 0 0 0 0 0 0 0 16-3584
+chrM 15453 0 0 0 0 0 0 0 16-3584
+chrM 15454 0 0 0 0 0 0 0 16-3584
+chrM 15455 0 0 0 0 0 0 0 16-3584
+chrM 15456 0 0 0 0 0 0 0 16-3584
+chrM 15457 0 0 0 0 0 0 0 16-3584
+chrM 15458 0 0 0 0 0 0 0 16-3584
+chrM 15459 0 0 0 0 0 0 0 16-3584
+chrM 15460 0 0 0 0 0 0 0 16-3584
+chrM 15461 0 0 0 0 0 0 0 16-3584
+chrM 15462 0 0 0 0 0 0 0 16-3584
+chrM 15463 0 0 0 0 0 0 0 16-3584
+chrM 15464 0 0 0 0 0 0 0 16-3584
+chrM 15465 0 0 0 0 0 0 0 16-3584
+chrM 15466 0 0 0 0 0 0 0 16-3584
+chrM 15467 0 0 0 0 0 0 0 16-3584
+chrM 15468 0 0 0 0 0 0 0 16-3584
+chrM 15469 0 0 0 0 0 0 0 16-3584
+chrM 15470 0 0 0 0 0 0 0 16-3584
+chrM 15471 0 0 0 0 0 0 0 16-3584
+chrM 15472 0 0 0 0 0 0 0 16-3584
+chrM 15473 0 0 0 0 0 0 0 16-3584
+chrM 15474 0 0 0 0 0 0 0 16-3584
+chrM 15475 0 0 0 0 0 0 0 16-3584
+chrM 15476 0 0 0 0 0 0 0 16-3584
+chrM 15477 0 0 0 0 0 0 0 16-3584
+chrM 15478 0 0 0 0 0 0 0 16-3584
+chrM 15479 0 0 0 0 0 0 0 16-3584
+chrM 15480 0 0 0 0 0 0 0 16-3584
+chrM 15481 0 0 0 0 0 0 0 16-3584
+chrM 15482 0 0 0 0 0 0 0 16-3584
+chrM 15483 0 0 0 0 0 0 0 16-3584
+chrM 15484 0 0 0 0 0 0 0 16-3584
+chrM 15485 0 0 0 0 0 0 0 16-3584
+chrM 15486 0 0 0 0 0 0 0 16-3584
+chrM 15487 0 0 0 0 0 0 0 16-3584
+chrM 15488 0 0 0 0 0 0 0 16-3584
+chrM 15489 0 0 0 0 0 0 0 16-3584
+chrM 15490 0 0 0 0 0 0 0 16-3584
+chrM 15491 0 0 0 0 0 0 0 16-3584
+chrM 15492 0 0 0 0 0 0 0 16-3584
+chrM 15493 0 0 0 0 0 0 0 16-3584
+chrM 15494 0 0 0 0 0 0 0 16-3584
+chrM 15495 0 0 0 0 0 0 0 16-3584
+chrM 15496 0 0 0 0 0 0 0 16-3584
+chrM 15497 0 0 0 0 0 0 0 16-3584
+chrM 15498 0 0 0 0 0 0 0 16-3584
+chrM 15499 0 0 0 0 0 0 0 16-3584
+chrM 15500 0 0 0 0 0 0 0 16-3584
+chrM 15501 0 0 0 0 0 0 0 16-3584
+chrM 15502 0 0 0 0 0 0 0 16-3584
+chrM 15503 0 0 0 0 0 0 0 16-3584
+chrM 15504 0 0 0 0 0 0 0 16-3584
+chrM 15505 0 0 0 0 0 0 0 16-3584
+chrM 15506 0 0 0 0 0 0 0 16-3584
+chrM 15507 0 0 0 0 0 0 0 16-3584
+chrM 15508 0 0 0 0 0 0 0 16-3584
+chrM 15509 0 0 0 0 0 0 0 16-3584
+chrM 15510 0 0 0 0 0 0 0 16-3584
+chrM 15511 0 0 0 0 0 0 0 16-3584
+chrM 15512 0 0 0 0 0 0 0 16-3584
+chrM 15513 0 0 0 0 0 0 0 16-3584
+chrM 15514 0 0 0 0 0 0 0 16-3584
+chrM 15515 0 0 0 0 0 0 0 16-3584
+chrM 15516 0 0 0 0 0 0 0 16-3584
+chrM 15517 0 0 0 0 0 0 0 16-3584
+chrM 15518 0 0 0 0 0 0 0 16-3584
+chrM 15519 0 0 0 0 0 0 0 16-3584
+chrM 15520 0 0 0 0 0 0 0 16-3584
+chrM 15521 0 0 0 0 0 0 0 16-3584
+chrM 15522 0 0 0 0 0 0 0 16-3584
+chrM 15523 0 0 0 0 0 0 0 16-3584
+chrM 15524 0 0 0 0 0 0 0 16-3584
+chrM 15525 0 0 0 0 0 0 0 16-3584
+chrM 15526 0 0 0 0 0 0 0 16-3584
+chrM 15527 0 0 0 0 0 0 0 16-3584
+chrM 15528 0 0 0 0 0 0 0 16-3584
+chrM 15529 0 0 0 0 0 0 0 16-3584
+chrM 15530 0 0 0 0 0 0 0 16-3584
+chrM 15531 0 0 0 0 0 0 0 16-3584
+chrM 15532 0 0 0 0 0 0 0 16-3584
+chrM 15533 0 0 0 0 0 0 0 16-3584
+chrM 15534 0 0 0 0 0 0 0 16-3584
+chrM 15535 0 0 0 0 0 0 0 16-3584
+chrM 15536 0 0 0 0 0 0 0 16-3584
+chrM 15537 0 0 0 0 0 0 0 16-3584
+chrM 15538 0 0 0 0 0 0 0 16-3584
+chrM 15539 0 0 0 0 0 0 0 16-3584
+chrM 15540 0 0 0 0 0 0 0 16-3584
+chrM 15541 0 0 0 0 0 0 0 16-3584
+chrM 15542 0 0 0 0 0 0 0 16-3584
+chrM 15543 0 0 0 0 0 0 0 16-3584
+chrM 15544 0 0 0 0 0 0 0 16-3584
+chrM 15545 0 0 0 0 0 0 0 16-3584
+chrM 15546 0 0 0 0 0 0 0 16-3584
+chrM 15547 0 0 0 0 0 0 0 16-3584
+chrM 15548 0 0 0 0 0 0 0 16-3584
+chrM 15549 0 0 0 0 0 0 0 16-3584
+chrM 15550 0 0 0 0 0 0 0 16-3584
+chrM 15551 0 0 0 0 0 0 0 16-3584
+chrM 15552 0 0 0 0 0 0 0 16-3584
+chrM 15553 0 0 0 0 0 0 0 16-3584
+chrM 15554 0 0 0 0 0 0 0 16-3584
+chrM 15555 0 0 0 0 0 0 0 16-3584
+chrM 15556 0 0 0 0 0 0 0 16-3584
+chrM 15557 0 0 0 0 0 0 0 16-3584
+chrM 15558 0 0 0 0 0 0 0 16-3584
+chrM 15559 0 0 0 0 0 0 0 16-3584
+chrM 15560 0 0 0 0 0 0 0 16-3584
+chrM 15561 0 0 0 0 0 0 0 16-3584
+chrM 15562 0 0 0 0 0 0 0 16-3584
+chrM 15563 0 0 0 0 0 0 0 16-3584
+chrM 15564 0 0 0 0 0 0 0 16-3584
+chrM 15565 0 0 0 0 0 0 0 16-3584
+chrM 15566 0 0 0 0 0 0 0 16-3584
+chrM 15567 0 0 0 0 0 0 0 16-3584
+chrM 15568 0 0 0 0 0 0 0 16-3584
+chrM 15569 0 0 0 0 0 0 0 16-3584
+chrM 15570 0 0 0 0 0 0 0 16-3584
+chrM 15571 0 0 0 0 0 0 0 16-3584
+chrM 15572 0 0 0 0 0 0 0 16-3584
+chrM 15573 0 0 0 0 0 0 0 16-3584
+chrM 15574 0 0 0 0 0 0 0 16-3584
+chrM 15575 0 0 0 0 0 0 0 16-3584
+chrM 15576 0 0 0 0 0 0 0 16-3584
+chrM 15577 0 0 0 0 0 0 0 16-3584
+chrM 15578 0 0 0 0 0 0 0 16-3584
+chrM 15579 0 0 0 0 0 0 0 16-3584
+chrM 15580 0 0 0 0 0 0 0 16-3584
+chrM 15581 0 0 0 0 0 0 0 16-3584
+chrM 15582 0 0 0 0 0 0 0 16-3584
+chrM 15583 0 0 0 0 0 0 0 16-3584
+chrM 15584 0 0 0 0 0 0 0 16-3584
+chrM 15585 0 0 0 0 0 0 0 16-3584
+chrM 15586 0 0 0 0 0 0 0 16-3584
+chrM 15587 0 0 0 0 0 0 0 16-3584
+chrM 15588 0 0 0 0 0 0 0 16-3584
+chrM 15589 0 0 0 0 0 0 0 16-3584
+chrM 15590 0 0 0 0 0 0 0 16-3584
+chrM 15591 0 0 0 0 0 0 0 16-3584
+chrM 15592 0 0 0 0 0 0 0 16-3584
+chrM 15593 0 0 0 0 0 0 0 16-3584
+chrM 15594 0 0 0 0 0 0 0 16-3584
+chrM 15595 0 0 0 0 0 0 0 16-3584
+chrM 15596 0 0 0 0 0 0 0 16-3584
+chrM 15597 0 0 0 0 0 0 0 16-3584
+chrM 15598 0 0 0 0 0 0 0 16-3584
+chrM 15599 0 0 0 0 0 0 0 16-3584
+chrM 15600 0 0 0 0 0 0 0 16-3584
+chrM 15601 0 0 0 0 0 0 0 16-3584
+chrM 15602 0 0 0 0 0 0 0 16-3584
+chrM 15603 0 0 0 0 0 0 0 16-3584
+chrM 15604 0 0 0 0 0 0 0 16-3584
+chrM 15605 0 0 0 0 0 0 0 16-3584
+chrM 15606 0 0 0 0 0 0 0 16-3584
+chrM 15607 0 0 0 0 0 0 0 16-3584
+chrM 15608 0 0 0 0 0 0 0 16-3584
+chrM 15609 0 0 0 0 0 0 0 16-3584
+chrM 15610 0 0 0 0 0 0 0 16-3584
+chrM 15611 0 0 0 0 0 0 0 16-3584
+chrM 15612 0 0 0 0 0 0 0 16-3584
+chrM 15613 0 0 0 0 0 0 0 16-3584
+chrM 15614 0 0 0 0 0 0 0 16-3584
+chrM 15615 0 0 0 0 0 0 0 16-3584
+chrM 15616 0 0 0 0 0 0 0 16-3584
+chrM 15617 0 0 0 0 0 0 0 16-3584
+chrM 15618 0 0 0 0 0 0 0 16-3584
+chrM 15619 0 0 0 0 0 0 0 16-3584
+chrM 15620 0 0 0 0 0 0 0 16-3584
+chrM 15621 0 0 0 0 0 0 0 16-3584
+chrM 15622 0 0 0 0 0 0 0 16-3584
+chrM 15623 0 0 0 0 0 0 0 16-3584
+chrM 15624 0 0 0 0 0 0 0 16-3584
+chrM 15625 0 0 0 0 0 0 0 16-3584
+chrM 15626 0 0 0 0 0 0 0 16-3584
+chrM 15627 0 0 0 0 0 0 0 16-3584
+chrM 15628 0 0 0 0 0 0 0 16-3584
+chrM 15629 0 0 0 0 0 0 0 16-3584
+chrM 15630 0 0 0 0 0 0 0 16-3584
+chrM 15631 0 0 0 0 0 0 0 16-3584
+chrM 15632 0 0 0 0 0 0 0 16-3584
+chrM 15633 0 0 0 0 0 0 0 16-3584
+chrM 15634 0 0 0 0 0 0 0 16-3584
+chrM 15635 0 0 0 0 0 0 0 16-3584
+chrM 15636 0 0 0 0 0 0 0 16-3584
+chrM 15637 0 0 0 0 0 0 0 16-3584
+chrM 15638 0 0 0 0 0 0 0 16-3584
+chrM 15639 0 0 0 0 0 0 0 16-3584
+chrM 15640 0 0 0 0 0 0 0 16-3584
+chrM 15641 0 0 0 0 0 0 0 16-3584
+chrM 15642 0 0 0 0 0 0 0 16-3584
+chrM 15643 0 0 0 0 0 0 0 16-3584
+chrM 15644 0 0 0 0 0 0 0 16-3584
+chrM 15645 0 0 0 0 0 0 0 16-3584
+chrM 15646 0 0 0 0 0 0 0 16-3584
+chrM 15647 0 0 0 0 0 0 0 16-3584
+chrM 15648 0 0 0 0 0 0 0 16-3584
+chrM 15649 0 0 0 0 0 0 0 16-3584
+chrM 15650 0 0 0 0 0 0 0 16-3584
+chrM 15651 0 0 0 0 0 0 0 16-3584
+chrM 15652 0 0 0 0 0 0 0 16-3584
+chrM 15653 0 0 0 0 0 0 0 16-3584
+chrM 15654 0 0 0 0 0 0 0 16-3584
+chrM 15655 0 0 0 0 0 0 0 16-3584
+chrM 15656 0 0 0 0 0 0 0 16-3584
+chrM 15657 0 0 0 0 0 0 0 16-3584
+chrM 15658 0 0 0 0 0 0 0 16-3584
+chrM 15659 0 0 0 0 0 0 0 16-3584
+chrM 15660 0 0 0 0 0 0 0 16-3584
+chrM 15661 0 0 0 0 0 0 0 16-3584
+chrM 15662 0 0 0 0 0 0 0 16-3584
+chrM 15663 0 0 0 0 0 0 0 16-3584
+chrM 15664 0 0 0 0 0 0 0 16-3584
+chrM 15665 0 0 0 0 0 0 0 16-3584
+chrM 15666 0 0 0 0 0 0 0 16-3584
+chrM 15667 0 0 0 0 0 0 0 16-3584
+chrM 15668 0 0 0 0 0 0 0 16-3584
+chrM 15669 0 0 0 0 0 0 0 16-3584
+chrM 15670 0 0 0 0 0 0 0 16-3584
+chrM 15671 0 0 0 0 0 0 0 16-3584
+chrM 15672 0 0 0 0 0 0 0 16-3584
+chrM 15673 0 0 0 0 0 0 0 16-3584
+chrM 15674 0 0 0 0 0 0 0 16-3584
+chrM 15675 0 0 0 0 0 0 0 16-3584
+chrM 15676 0 0 0 0 0 0 0 16-3584
+chrM 15677 0 0 0 0 0 0 0 16-3584
+chrM 15678 0 0 0 0 0 0 0 16-3584
+chrM 15679 0 0 0 0 0 0 0 16-3584
+chrM 15680 0 0 0 0 0 0 0 16-3584
+chrM 15681 0 0 0 0 0 0 0 16-3584
+chrM 15682 0 0 0 0 0 0 0 16-3584
+chrM 15683 0 0 0 0 0 0 0 16-3584
+chrM 15684 0 0 0 0 0 0 0 16-3584
+chrM 15685 0 0 0 0 0 0 0 16-3584
+chrM 15686 0 0 0 0 0 0 0 16-3584
+chrM 15687 0 0 0 0 0 0 0 16-3584
+chrM 15688 0 0 0 0 0 0 0 16-3584
+chrM 15689 0 0 0 0 0 0 0 16-3584
+chrM 15690 0 0 0 0 0 0 0 16-3584
+chrM 15691 0 0 0 0 0 0 0 16-3584
+chrM 15692 0 0 0 0 0 0 0 16-3584
+chrM 15693 0 0 0 0 0 0 0 16-3584
+chrM 15694 0 0 0 0 0 0 0 16-3584
+chrM 15695 0 0 0 0 0 0 0 16-3584
+chrM 15696 0 0 0 0 0 0 0 16-3584
+chrM 15697 0 0 0 0 0 0 0 16-3584
+chrM 15698 0 0 0 0 0 0 0 16-3584
+chrM 15699 0 0 0 0 0 0 0 16-3584
+chrM 15700 0 0 0 0 0 0 0 16-3584
+chrM 15701 0 0 0 0 0 0 0 16-3584
+chrM 15702 0 0 0 0 0 0 0 16-3584
+chrM 15703 0 0 0 0 0 0 0 16-3584
+chrM 15704 0 0 0 0 0 0 0 16-3584
+chrM 15705 0 0 0 0 0 0 0 16-3584
+chrM 15706 0 0 0 0 0 0 0 16-3584
+chrM 15707 0 0 0 0 0 0 0 16-3584
+chrM 15708 0 0 0 0 0 0 0 16-3584
+chrM 15709 0 0 0 0 0 0 0 16-3584
+chrM 15710 0 0 0 0 0 0 0 16-3584
+chrM 15711 0 0 0 0 0 0 0 16-3584
+chrM 15712 0 0 0 0 0 0 0 16-3584
+chrM 15713 0 0 0 0 0 0 0 16-3584
+chrM 15714 0 0 0 0 0 0 0 16-3584
+chrM 15715 0 0 0 0 0 0 0 16-3584
+chrM 15716 0 0 0 0 0 0 0 16-3584
+chrM 15717 0 0 0 0 0 0 0 16-3584
+chrM 15718 0 0 0 0 0 0 0 16-3584
+chrM 15719 0 0 0 0 0 0 0 16-3584
+chrM 15720 0 0 0 0 0 0 0 16-3584
+chrM 15721 0 0 0 0 0 0 0 16-3584
+chrM 15722 0 0 0 0 0 0 0 16-3584
+chrM 15723 0 0 0 0 0 0 0 16-3584
+chrM 15724 0 0 0 0 0 0 0 16-3584
+chrM 15725 0 0 0 0 0 0 0 16-3584
+chrM 15726 0 0 0 0 0 0 0 16-3584
+chrM 15727 0 0 0 0 0 0 0 16-3584
+chrM 15728 0 0 0 0 0 0 0 16-3584
+chrM 15729 0 0 0 0 0 0 0 16-3584
+chrM 15730 0 0 0 0 0 0 0 16-3584
+chrM 15731 0 0 0 0 0 0 0 16-3584
+chrM 15732 0 0 0 0 0 0 0 16-3584
+chrM 15733 0 0 0 0 0 0 0 16-3584
+chrM 15734 0 0 0 0 0 0 0 16-3584
+chrM 15735 0 0 0 0 0 0 0 16-3584
+chrM 15736 0 0 0 0 0 0 0 16-3584
+chrM 15737 0 0 0 0 0 0 0 16-3584
+chrM 15738 0 0 0 0 0 0 0 16-3584
+chrM 15739 0 0 0 0 0 0 0 16-3584
+chrM 15740 0 0 0 0 0 0 0 16-3584
+chrM 15741 0 0 0 0 0 0 0 16-3584
+chrM 15742 0 0 0 0 0 0 0 16-3584
+chrM 15743 0 0 0 0 0 0 0 16-3584
+chrM 15744 0 0 0 0 0 0 0 16-3584
+chrM 15745 0 0 0 0 0 0 0 16-3584
+chrM 15746 0 0 0 0 0 0 0 16-3584
+chrM 15747 0 0 0 0 0 0 0 16-3584
+chrM 15748 0 0 0 0 0 0 0 16-3584
+chrM 15749 0 0 0 0 0 0 0 16-3584
+chrM 15750 0 0 0 0 0 0 0 16-3584
+chrM 15751 0 0 0 0 0 0 0 16-3584
+chrM 15752 0 0 0 0 0 0 0 16-3584
+chrM 15753 0 0 0 0 0 0 0 16-3584
+chrM 15754 0 0 0 0 0 0 0 16-3584
+chrM 15755 0 0 0 0 0 0 0 16-3584
+chrM 15756 0 0 0 0 0 0 0 16-3584
+chrM 15757 0 0 0 0 0 0 0 16-3584
+chrM 15758 0 0 0 0 0 0 0 16-3584
+chrM 15759 0 0 0 0 0 0 0 16-3584
+chrM 15760 0 0 0 0 0 0 0 16-3584
+chrM 15761 0 0 0 0 0 0 0 16-3584
+chrM 15762 0 0 0 0 0 0 0 16-3584
+chrM 15763 0 0 0 0 0 0 0 16-3584
+chrM 15764 0 0 0 0 0 0 0 16-3584
+chrM 15765 0 0 0 0 0 0 0 16-3584
+chrM 15766 0 0 0 0 0 0 0 16-3584
+chrM 15767 0 0 0 0 0 0 0 16-3584
+chrM 15768 0 0 0 0 0 0 0 16-3584
+chrM 15769 0 0 0 0 0 0 0 16-3584
+chrM 15770 0 0 0 0 0 0 0 16-3584
+chrM 15771 0 0 0 0 0 0 0 16-3584
+chrM 15772 0 0 0 0 0 0 0 16-3584
+chrM 15773 0 0 0 0 0 0 0 16-3584
+chrM 15774 0 0 0 0 0 0 0 16-3584
+chrM 15775 0 0 0 0 0 0 0 16-3584
+chrM 15776 0 0 0 0 0 0 0 16-3584
+chrM 15777 0 0 0 0 0 0 0 16-3584
+chrM 15778 0 0 0 0 0 0 0 16-3584
+chrM 15779 0 0 0 0 0 0 0 16-3584
+chrM 15780 0 0 0 0 0 0 0 16-3584
+chrM 15781 0 0 0 0 0 0 0 16-3584
+chrM 15782 0 0 0 0 0 0 0 16-3584
+chrM 15783 0 0 0 0 0 0 0 16-3584
+chrM 15784 0 0 0 0 0 0 0 16-3584
+chrM 15785 0 0 0 0 0 0 0 16-3584
+chrM 15786 0 0 0 0 0 0 0 16-3584
+chrM 15787 0 0 0 0 0 0 0 16-3584
+chrM 15788 0 0 0 0 0 0 0 16-3584
+chrM 15789 0 0 0 0 0 0 0 16-3584
+chrM 15790 0 0 0 0 0 0 0 16-3584
+chrM 15791 0 0 0 0 0 0 0 16-3584
+chrM 15792 0 0 0 0 0 0 0 16-3584
+chrM 15793 0 0 0 0 0 0 0 16-3584
+chrM 15794 0 0 0 0 0 0 0 16-3584
+chrM 15795 0 0 0 0 0 0 0 16-3584
+chrM 15796 0 0 0 0 0 0 0 16-3584
+chrM 15797 0 0 0 0 0 0 0 16-3584
+chrM 15798 0 0 0 0 0 0 0 16-3584
+chrM 15799 0 0 0 0 0 0 0 16-3584
+chrM 15800 0 0 0 0 0 0 0 16-3584
+chrM 15801 0 0 0 0 0 0 0 16-3584
+chrM 15802 0 0 0 0 0 0 0 16-3584
+chrM 15803 0 0 0 0 0 0 0 16-3584
+chrM 15804 0 0 0 0 0 0 0 16-3584
+chrM 15805 0 0 0 0 0 0 0 16-3584
+chrM 15806 0 0 0 0 0 0 0 16-3584
+chrM 15807 0 0 0 0 0 0 0 16-3584
+chrM 15808 0 0 0 0 0 0 0 16-3584
+chrM 15809 0 0 0 0 0 0 0 16-3584
+chrM 15810 0 0 0 0 0 0 0 16-3584
+chrM 15811 0 0 0 0 0 0 0 16-3584
+chrM 15812 0 0 0 0 0 0 0 16-3584
+chrM 15813 0 0 0 0 0 0 0 16-3584
+chrM 15814 0 0 0 0 0 0 0 16-3584
+chrM 15815 0 0 0 0 0 0 0 16-3584
+chrM 15816 0 0 0 0 0 0 0 16-3584
+chrM 15817 0 0 0 0 0 0 0 16-3584
+chrM 15818 0 0 0 0 0 0 0 16-3584
+chrM 15819 0 0 0 0 0 0 0 16-3584
+chrM 15820 0 0 0 0 0 0 0 16-3584
+chrM 15821 0 0 0 0 0 0 0 16-3584
+chrM 15822 0 0 0 0 0 0 0 16-3584
+chrM 15823 0 0 0 0 0 0 0 16-3584
+chrM 15824 0 0 0 0 0 0 0 16-3584
+chrM 15825 0 0 0 0 0 0 0 16-3584
+chrM 15826 0 0 0 0 0 0 0 16-3584
+chrM 15827 0 0 0 0 0 0 0 16-3584
+chrM 15828 0 0 0 0 0 0 0 16-3584
+chrM 15829 0 0 0 0 0 0 0 16-3584
+chrM 15830 0 0 0 0 0 0 0 16-3584
+chrM 15831 0 0 0 0 0 0 0 16-3584
+chrM 15832 0 0 0 0 0 0 0 16-3584
+chrM 15833 0 0 0 0 0 0 0 16-3584
+chrM 15834 0 0 0 0 0 0 0 16-3584
+chrM 15835 0 0 0 0 0 0 0 16-3584
+chrM 15836 0 0 0 0 0 0 0 16-3584
+chrM 15837 0 0 0 0 0 0 0 16-3584
+chrM 15838 0 0 0 0 0 0 0 16-3584
+chrM 15839 0 0 0 0 0 0 0 16-3584
+chrM 15840 0 0 0 0 0 0 0 16-3584
+chrM 15841 0 0 0 0 0 0 0 16-3584
+chrM 15842 0 0 0 0 0 0 0 16-3584
+chrM 15843 0 0 0 0 0 0 0 16-3584
+chrM 15844 0 0 0 0 0 0 0 16-3584
+chrM 15845 0 0 0 0 0 0 0 16-3584
+chrM 15846 0 0 0 0 0 0 0 16-3584
+chrM 15847 0 0 0 0 0 0 0 16-3584
+chrM 15848 0 0 0 0 0 0 0 16-3584
+chrM 15849 0 0 0 0 0 0 0 16-3584
+chrM 15850 0 0 0 0 0 0 0 16-3584
+chrM 15851 0 0 0 0 0 0 0 16-3584
+chrM 15852 0 0 0 0 0 0 0 16-3584
+chrM 15853 0 0 0 0 0 0 0 16-3584
+chrM 15854 0 0 0 0 0 0 0 16-3584
+chrM 15855 0 0 0 0 0 0 0 16-3584
+chrM 15856 0 0 0 0 0 0 0 16-3584
+chrM 15857 0 0 0 0 0 0 0 16-3584
+chrM 15858 0 0 0 0 0 0 0 16-3584
+chrM 15859 0 0 0 0 0 0 0 16-3584
+chrM 15860 0 0 0 0 0 0 0 16-3584
+chrM 15861 0 0 0 0 0 0 0 16-3584
+chrM 15862 0 0 0 0 0 0 0 16-3584
+chrM 15863 0 0 0 0 0 0 0 16-3584
+chrM 15864 0 0 0 0 0 0 0 16-3584
+chrM 15865 0 0 0 0 0 0 0 16-3584
+chrM 15866 0 0 0 0 0 0 0 16-3584
+chrM 15867 0 0 0 0 0 0 0 16-3584
+chrM 15868 0 0 0 0 0 0 0 16-3584
+chrM 15869 0 0 0 0 0 0 0 16-3584
+chrM 15870 0 0 0 0 0 0 0 16-3584
+chrM 15871 0 0 0 0 0 0 0 16-3584
+chrM 15872 0 0 0 0 0 0 0 16-3584
+chrM 15873 0 0 0 0 0 0 0 16-3584
+chrM 15874 0 0 0 0 0 0 0 16-3584
+chrM 15875 0 0 0 0 0 0 0 16-3584
+chrM 15876 0 0 0 0 0 0 0 16-3584
+chrM 15877 0 0 0 0 0 0 0 16-3584
+chrM 15878 0 0 0 0 0 0 0 16-3584
+chrM 15879 0 0 0 0 0 0 0 16-3584
+chrM 15880 0 0 0 0 0 0 0 16-3584
+chrM 15881 0 0 0 0 0 0 0 16-3584
+chrM 15882 0 0 0 0 0 0 0 16-3584
+chrM 15883 0 0 0 0 0 0 0 16-3584
+chrM 15884 0 0 0 0 0 0 0 16-3584
+chrM 15885 0 0 0 0 0 0 0 16-3584
+chrM 15886 0 0 0 0 0 0 0 16-3584
+chrM 15887 0 0 0 0 0 0 0 16-3584
+chrM 15888 0 0 0 0 0 0 0 16-3584
+chrM 15889 0 0 0 0 0 0 0 16-3584
+chrM 15890 0 0 0 0 0 0 0 16-3584
+chrM 15891 0 0 0 0 0 0 0 16-3584
+chrM 15892 0 0 0 0 0 0 0 16-3584
+chrM 15893 0 0 0 0 0 0 0 16-3584
+chrM 15894 0 0 0 0 0 0 0 16-3584
+chrM 15895 0 0 0 0 0 0 0 16-3584
+chrM 15896 0 0 0 0 0 0 0 16-3584
+chrM 15897 0 0 0 0 0 0 0 16-3584
+chrM 15898 0 0 0 0 0 0 0 16-3584
+chrM 15899 0 0 0 0 0 0 0 16-3584
+chrM 15900 0 0 0 0 0 0 0 16-3584
+chrM 15901 0 0 0 0 0 0 0 16-3584
+chrM 15902 0 0 0 0 0 0 0 16-3584
+chrM 15903 0 0 0 0 0 0 0 16-3584
+chrM 15904 0 0 0 0 0 0 0 16-3584
+chrM 15905 0 0 0 0 0 0 0 16-3584
+chrM 15906 0 0 0 0 0 0 0 16-3584
+chrM 15907 0 0 0 0 0 0 0 16-3584
+chrM 15908 0 0 0 0 0 0 0 16-3584
+chrM 15909 0 0 0 0 0 0 0 16-3584
+chrM 15910 0 0 0 0 0 0 0 16-3584
+chrM 15911 0 0 0 0 0 0 0 16-3584
+chrM 15912 0 0 0 0 0 0 0 16-3584
+chrM 15913 0 0 0 0 0 0 0 16-3584
+chrM 15914 0 0 0 0 0 0 0 16-3584
+chrM 15915 0 0 0 0 0 0 0 16-3584
+chrM 15916 0 0 0 0 0 0 0 16-3584
+chrM 15917 0 0 0 0 0 0 0 16-3584
+chrM 15918 0 0 0 0 0 0 0 16-3584
+chrM 15919 0 0 0 0 0 0 0 16-3584
+chrM 15920 0 0 0 0 0 0 0 16-3584
+chrM 15921 0 0 0 0 0 0 0 16-3584
+chrM 15922 0 0 0 0 0 0 0 16-3584
+chrM 15923 0 0 0 0 0 0 0 16-3584
+chrM 15924 0 0 0 0 0 0 0 16-3584
+chrM 15925 0 0 0 0 0 0 0 16-3584
+chrM 15926 0 0 0 0 0 0 0 16-3584
+chrM 15927 0 0 0 0 0 0 0 16-3584
+chrM 15928 0 0 0 0 0 0 0 16-3584
+chrM 15929 0 0 0 0 0 0 0 16-3584
+chrM 15930 0 0 0 0 0 0 0 16-3584
+chrM 15931 0 0 0 0 0 0 0 16-3584
+chrM 15932 0 0 0 0 0 0 0 16-3584
+chrM 15933 0 0 0 0 0 0 0 16-3584
+chrM 15934 0 0 0 0 0 0 0 16-3584
+chrM 15935 0 0 0 0 0 0 0 16-3584
+chrM 15936 0 0 0 0 0 0 0 16-3584
+chrM 15937 0 0 0 0 0 0 0 16-3584
+chrM 15938 0 0 0 0 0 0 0 16-3584
+chrM 15939 0 0 0 0 0 0 0 16-3584
+chrM 15940 0 0 0 0 0 0 0 16-3584
+chrM 15941 0 0 0 0 0 0 0 16-3584
+chrM 15942 0 0 0 0 0 0 0 16-3584
+chrM 15943 0 0 0 0 0 0 0 16-3584
+chrM 15944 0 0 0 0 0 0 0 16-3584
+chrM 15945 0 0 0 0 0 0 0 16-3584
+chrM 15946 0 0 0 0 0 0 0 16-3584
+chrM 15947 0 0 0 0 0 0 0 16-3584
+chrM 15948 0 0 0 0 0 0 0 16-3584
+chrM 15949 0 0 0 0 0 0 0 16-3584
+chrM 15950 0 0 0 0 0 0 0 16-3584
+chrM 15951 0 0 0 0 0 0 0 16-3584
+chrM 15952 0 0 0 0 0 0 0 16-3584
+chrM 15953 0 0 0 0 0 0 0 16-3584
+chrM 15954 0 0 0 0 0 0 0 16-3584
+chrM 15955 0 0 0 0 0 0 0 16-3584
+chrM 15956 0 0 0 0 0 0 0 16-3584
+chrM 15957 0 0 0 0 0 0 0 16-3584
+chrM 15958 0 0 0 0 0 0 0 16-3584
+chrM 15959 0 0 0 0 0 0 0 16-3584
+chrM 15960 0 0 0 0 0 0 0 16-3584
+chrM 15961 0 0 0 0 0 0 0 16-3584
+chrM 15962 0 0 0 0 0 0 0 16-3584
+chrM 15963 0 0 0 0 0 0 0 16-3584
+chrM 15964 0 0 0 0 0 0 0 16-3584
+chrM 15965 0 0 0 0 0 0 0 16-3584
+chrM 15966 0 0 0 0 0 0 0 16-3584
+chrM 15967 0 0 0 0 0 0 0 16-3584
+chrM 15968 0 0 0 0 0 0 0 16-3584
+chrM 15969 0 0 0 0 0 0 0 16-3584
+chrM 15970 0 0 0 0 0 0 0 16-3584
+chrM 15971 0 0 0 0 0 0 0 16-3584
+chrM 15972 0 0 0 0 0 0 0 16-3584
+chrM 15973 0 0 0 0 0 0 0 16-3584
+chrM 15974 0 0 0 0 0 0 0 16-3584
+chrM 15975 0 0 0 0 0 0 0 16-3584
+chrM 15976 0 0 0 0 0 0 0 16-3584
+chrM 15977 0 0 0 0 0 0 0 16-3584
+chrM 15978 0 0 0 0 0 0 0 16-3584
+chrM 15979 0 0 0 0 0 0 0 16-3584
+chrM 15980 0 0 0 0 0 0 0 16-3584
+chrM 15981 0 0 0 0 0 0 0 16-3584
+chrM 15982 0 0 0 0 0 0 0 16-3584
+chrM 15983 0 0 0 0 0 0 0 16-3584
+chrM 15984 0 0 0 0 0 0 0 16-3584
+chrM 15985 0 0 0 0 0 0 0 16-3584
+chrM 15986 0 0 0 0 0 0 0 16-3584
+chrM 15987 0 0 0 0 0 0 0 16-3584
+chrM 15988 0 0 0 0 0 0 0 16-3584
+chrM 15989 0 0 0 0 0 0 0 16-3584
+chrM 15990 0 0 0 0 0 0 0 16-3584
+chrM 15991 0 0 0 0 0 0 0 16-3584
+chrM 15992 0 0 0 0 0 0 0 16-3584
+chrM 15993 0 0 0 0 0 0 0 16-3584
+chrM 15994 0 0 0 0 0 0 0 16-3584
+chrM 15995 0 0 0 0 0 0 0 16-3584
+chrM 15996 0 0 0 0 0 0 0 16-3584
+chrM 15997 0 0 0 0 0 0 0 16-3584
+chrM 15998 0 0 0 0 0 0 0 16-3584
+chrM 15999 0 0 0 0 0 0 0 16-3584
+chrM 16000 0 0 0 0 0 0 0 16-3584
+chrM 16001 0 0 0 0 0 0 0 16-3584
+chrM 16002 0 0 0 0 0 0 0 16-3584
+chrM 16003 0 0 0 0 0 0 0 16-3584
+chrM 16004 0 0 0 0 0 0 0 16-3584
+chrM 16005 0 0 0 0 0 0 0 16-3584
+chrM 16006 0 0 0 0 0 0 0 16-3584
+chrM 16007 0 0 0 0 0 0 0 16-3584
+chrM 16008 0 0 0 0 0 0 0 16-3584
+chrM 16009 0 0 0 0 0 0 0 16-3584
+chrM 16010 0 0 0 0 0 0 0 16-3584
+chrM 16011 0 0 0 0 0 0 0 16-3584
+chrM 16012 0 0 0 0 0 0 0 16-3584
+chrM 16013 0 0 0 0 0 0 0 16-3584
+chrM 16014 0 0 0 0 0 0 0 16-3584
+chrM 16015 0 0 0 0 0 0 0 16-3584
+chrM 16016 0 0 0 0 0 0 0 16-3584
+chrM 16017 0 0 0 0 0 0 0 16-3584
+chrM 16018 0 0 0 0 0 0 0 16-3584
+chrM 16019 0 0 0 0 0 0 0 16-3584
+chrM 16020 0 0 0 0 0 0 0 16-3584
+chrM 16021 0 0 0 0 0 0 0 16-3584
+chrM 16022 0 0 0 0 0 0 0 16-3584
+chrM 16023 0 0 0 0 0 0 0 16-3584
+chrM 16024 0 0 0 0 0 0 0 16-3584
+chrM 16025 0 0 0 0 0 0 0 16-3584
+chrM 16026 0 0 0 0 0 0 0 16-3584
+chrM 16027 0 0 0 0 0 0 0 16-3584
+chrM 16028 0 0 0 0 0 0 0 16-3584
+chrM 16029 0 0 0 0 0 0 0 16-3584
+chrM 16030 0 0 0 0 0 0 0 16-3584
+chrM 16031 0 0 0 0 0 0 0 16-3584
+chrM 16032 0 0 0 0 0 0 0 16-3584
+chrM 16033 0 0 0 0 0 0 0 16-3584
+chrM 16034 0 0 0 0 0 0 0 16-3584
+chrM 16035 0 0 0 0 0 0 0 16-3584
+chrM 16036 0 0 0 0 0 0 0 16-3584
+chrM 16037 0 0 0 0 0 0 0 16-3584
+chrM 16038 0 0 0 0 0 0 0 16-3584
+chrM 16039 0 0 0 0 0 0 0 16-3584
+chrM 16040 0 0 0 0 0 0 0 16-3584
+chrM 16041 0 0 0 0 0 0 0 16-3584
+chrM 16042 0 0 0 0 0 0 0 16-3584
+chrM 16043 0 0 0 0 0 0 0 16-3584
+chrM 16044 0 0 0 0 0 0 0 16-3584
+chrM 16045 0 0 0 0 0 0 0 16-3584
+chrM 16046 0 0 0 0 0 0 0 16-3584
+chrM 16047 0 0 0 0 0 0 0 16-3584
+chrM 16048 0 0 0 0 0 0 0 16-3584
+chrM 16049 0 0 0 0 0 0 0 16-3584
+chrM 16050 0 0 0 0 0 0 0 16-3584
+chrM 16051 0 0 0 0 0 0 0 16-3584
+chrM 16052 0 0 0 0 0 0 0 16-3584
+chrM 16053 0 0 0 0 0 0 0 16-3584
+chrM 16054 0 0 0 0 0 0 0 16-3584
+chrM 16055 0 0 0 0 0 0 0 16-3584
+chrM 16056 0 0 0 0 0 0 0 16-3584
+chrM 16057 0 0 0 0 0 0 0 16-3584
+chrM 16058 0 0 0 0 0 0 0 16-3584
+chrM 16059 0 0 0 0 0 0 0 16-3584
+chrM 16060 0 0 0 0 0 0 0 16-3584
+chrM 16061 0 0 0 0 0 0 0 16-3584
+chrM 16062 0 0 0 0 0 0 0 16-3584
+chrM 16063 0 0 0 0 0 0 0 16-3584
+chrM 16064 0 0 0 0 0 0 0 16-3584
+chrM 16065 0 0 0 0 0 0 0 16-3584
+chrM 16066 0 0 0 0 0 0 0 16-3584
+chrM 16067 0 0 0 0 0 0 0 16-3584
+chrM 16068 0 0 0 0 0 0 0 16-3584
+chrM 16069 0 0 0 0 0 0 0 16-3584
+chrM 16070 0 0 0 0 0 0 0 16-3584
+chrM 16071 0 0 0 0 0 0 0 16-3584
+chrM 16072 0 0 0 0 0 0 0 16-3584
+chrM 16073 0 0 0 0 0 0 0 16-3584
+chrM 16074 0 0 0 0 0 0 0 16-3584
+chrM 16075 0 0 0 0 0 0 0 16-3584
+chrM 16076 0 0 0 0 0 0 0 16-3584
+chrM 16077 0 0 0 0 0 0 0 16-3584
+chrM 16078 0 0 0 0 0 0 0 16-3584
+chrM 16079 0 0 0 0 0 0 0 16-3584
+chrM 16080 0 0 0 0 0 0 0 16-3584
+chrM 16081 0 0 0 0 0 0 0 16-3584
+chrM 16082 0 0 0 0 0 0 0 16-3584
+chrM 16083 0 0 0 0 0 0 0 16-3584
+chrM 16084 0 0 0 0 0 0 0 16-3584
+chrM 16085 0 0 0 0 0 0 0 16-3584
+chrM 16086 0 0 0 0 0 0 0 16-3584
+chrM 16087 0 0 0 0 0 0 0 16-3584
+chrM 16088 0 0 0 0 0 0 0 16-3584
+chrM 16089 0 0 0 0 0 0 0 16-3584
+chrM 16090 0 0 0 0 0 0 0 16-3584
+chrM 16091 0 0 0 0 0 0 0 16-3584
+chrM 16092 0 0 0 0 0 0 0 16-3584
+chrM 16093 0 0 0 0 0 0 0 16-3584
+chrM 16094 0 0 0 0 0 0 0 16-3584
+chrM 16095 0 0 0 0 0 0 0 16-3584
+chrM 16096 0 0 0 0 0 0 0 16-3584
+chrM 16097 0 0 0 0 0 0 0 16-3584
+chrM 16098 0 0 0 0 0 0 0 16-3584
+chrM 16099 0 0 0 0 0 0 0 16-3584
+chrM 16100 0 0 0 0 0 0 0 16-3584
+chrM 16101 0 0 0 0 0 0 0 16-3584
+chrM 16102 0 0 0 0 0 0 0 16-3584
+chrM 16103 0 0 0 0 0 0 0 16-3584
+chrM 16104 0 0 0 0 0 0 0 16-3584
+chrM 16105 0 0 0 0 0 0 0 16-3584
+chrM 16106 0 0 0 0 0 0 0 16-3584
+chrM 16107 0 0 0 0 0 0 0 16-3584
+chrM 16108 0 0 0 0 0 0 0 16-3584
+chrM 16109 0 0 0 0 0 0 0 16-3584
+chrM 16110 0 0 0 0 0 0 0 16-3584
+chrM 16111 0 0 0 0 0 0 0 16-3584
+chrM 16112 0 0 0 0 0 0 0 16-3584
+chrM 16113 0 0 0 0 0 0 0 16-3584
+chrM 16114 0 0 0 0 0 0 0 16-3584
+chrM 16115 0 0 0 0 0 0 0 16-3584
+chrM 16116 0 0 0 0 0 0 0 16-3584
+chrM 16117 0 0 0 0 0 0 0 16-3584
+chrM 16118 0 0 0 0 0 0 0 16-3584
+chrM 16119 0 0 0 0 0 0 0 16-3584
+chrM 16120 0 0 0 0 0 0 0 16-3584
+chrM 16121 0 0 0 0 0 0 0 16-3584
+chrM 16122 0 0 0 0 0 0 0 16-3584
+chrM 16123 0 0 0 0 0 0 0 16-3584
+chrM 16124 0 0 0 0 0 0 0 16-3584
+chrM 16125 0 0 0 0 0 0 0 16-3584
+chrM 16126 0 0 0 0 0 0 0 16-3584
+chrM 16127 0 0 0 0 0 0 0 16-3584
+chrM 16128 0 0 0 0 0 0 0 16-3584
+chrM 16129 0 0 0 0 0 0 0 16-3584
+chrM 16130 0 0 0 0 0 0 0 16-3584
+chrM 16131 0 0 0 0 0 0 0 16-3584
+chrM 16132 0 0 0 0 0 0 0 16-3584
+chrM 16133 0 0 0 0 0 0 0 16-3584
+chrM 16134 0 0 0 0 0 0 0 16-3584
+chrM 16135 0 0 0 0 0 0 0 16-3584
+chrM 16136 0 0 0 0 0 0 0 16-3584
+chrM 16137 0 0 0 0 0 0 0 16-3584
+chrM 16138 0 0 0 0 0 0 0 16-3584
+chrM 16139 0 0 0 0 0 0 0 16-3584
+chrM 16140 0 0 0 0 0 0 0 16-3584
+chrM 16141 0 0 0 0 0 0 0 16-3584
+chrM 16142 0 0 0 0 0 0 0 16-3584
+chrM 16143 0 0 0 0 0 0 0 16-3584
+chrM 16144 0 0 0 0 0 0 0 16-3584
+chrM 16145 0 0 0 0 0 0 0 16-3584
+chrM 16146 0 0 0 0 0 0 0 16-3584
+chrM 16147 0 0 0 0 0 0 0 16-3584
+chrM 16148 0 0 0 0 0 0 0 16-3584
+chrM 16149 0 0 0 0 0 0 0 16-3584
+chrM 16150 0 0 0 0 0 0 0 16-3584
+chrM 16151 0 0 0 0 0 0 0 16-3584
+chrM 16152 0 0 0 0 0 0 0 16-3584
+chrM 16153 0 0 0 0 0 0 0 16-3584
+chrM 16154 0 0 0 0 0 0 0 16-3584
+chrM 16155 0 0 0 0 0 0 0 16-3584
+chrM 16156 0 0 0 0 0 0 0 16-3584
+chrM 16157 0 0 0 0 0 0 0 16-3584
+chrM 16158 0 0 0 0 0 0 0 16-3584
+chrM 16159 0 0 0 0 0 0 0 16-3584
+chrM 16160 0 0 0 0 0 0 0 16-3584
+chrM 16161 0 0 0 0 0 0 0 16-3584
+chrM 16162 0 0 0 0 0 0 0 16-3584
+chrM 16163 0 0 0 0 0 0 0 16-3584
+chrM 16164 0 0 0 0 0 0 0 16-3584
+chrM 16165 0 0 0 0 0 0 0 16-3584
+chrM 16166 0 0 0 0 0 0 0 16-3584
+chrM 16167 0 0 0 0 0 0 0 16-3584
+chrM 16168 0 0 0 0 0 0 0 16-3584
+chrM 16169 0 0 0 0 0 0 0 16-3584
+chrM 16170 0 0 0 0 0 0 0 16-3584
+chrM 16171 0 0 0 0 0 0 0 16-3584
+chrM 16172 0 0 0 0 0 0 0 16-3584
+chrM 16173 0 0 0 0 0 0 0 16-3584
+chrM 16174 0 0 0 0 0 0 0 16-3584
+chrM 16175 0 0 0 0 0 0 0 16-3584
+chrM 16176 0 0 0 0 0 0 0 16-3584
+chrM 16177 0 0 0 0 0 0 0 16-3584
+chrM 16178 0 0 0 0 0 0 0 16-3584
+chrM 16179 0 0 0 0 0 0 0 16-3584
+chrM 16180 0 0 0 0 0 0 0 16-3584
+chrM 16181 0 0 0 0 0 0 0 16-3584
+chrM 16182 0 0 0 0 0 0 0 16-3584
+chrM 16183 0 0 0 0 0 0 0 16-3584
+chrM 16184 0 0 0 0 0 0 0 16-3584
+chrM 16185 0 0 0 0 0 0 0 16-3584
+chrM 16186 0 0 0 0 0 0 0 16-3584
+chrM 16187 0 0 0 0 0 0 0 16-3584
+chrM 16188 0 0 0 0 0 0 0 16-3584
+chrM 16189 0 0 0 0 0 0 0 16-3584
+chrM 16190 0 0 0 0 0 0 0 16-3584
+chrM 16191 0 0 0 0 0 0 0 16-3584
+chrM 16192 0 0 0 0 0 0 0 16-3584
+chrM 16193 0 0 0 0 0 0 0 16-3584
+chrM 16194 0 0 0 0 0 0 0 16-3584
+chrM 16195 0 0 0 0 0 0 0 16-3584
+chrM 16196 0 0 0 0 0 0 0 16-3584
+chrM 16197 0 0 0 0 0 0 0 16-3584
+chrM 16198 0 0 0 0 0 0 0 16-3584
+chrM 16199 0 0 0 0 0 0 0 16-3584
+chrM 16200 0 0 0 0 0 0 0 16-3584
+chrM 16201 0 0 0 0 0 0 0 16-3584
+chrM 16202 0 0 0 0 0 0 0 16-3584
+chrM 16203 0 0 0 0 0 0 0 16-3584
+chrM 16204 0 0 0 0 0 0 0 16-3584
+chrM 16205 0 0 0 0 0 0 0 16-3584
+chrM 16206 0 0 0 0 0 0 0 16-3584
+chrM 16207 0 0 0 0 0 0 0 16-3584
+chrM 16208 0 0 0 0 0 0 0 16-3584
+chrM 16209 0 0 0 0 0 0 0 16-3584
+chrM 16210 0 0 0 0 0 0 0 16-3584
+chrM 16211 0 0 0 0 0 0 0 16-3584
+chrM 16212 0 0 0 0 0 0 0 16-3584
+chrM 16213 0 0 0 0 0 0 0 16-3584
+chrM 16214 0 0 0 0 0 0 0 16-3584
+chrM 16215 0 0 0 0 0 0 0 16-3584
+chrM 16216 0 0 0 0 0 0 0 16-3584
+chrM 16217 0 0 0 0 0 0 0 16-3584
+chrM 16218 0 0 0 0 0 0 0 16-3584
+chrM 16219 0 0 0 0 0 0 0 16-3584
+chrM 16220 0 0 0 0 0 0 0 16-3584
+chrM 16221 0 0 0 0 0 0 0 16-3584
+chrM 16222 0 0 0 0 0 0 0 16-3584
+chrM 16223 0 0 0 0 0 0 0 16-3584
+chrM 16224 0 0 0 0 0 0 0 16-3584
+chrM 16225 0 0 0 0 0 0 0 16-3584
+chrM 16226 0 0 0 0 0 0 0 16-3584
+chrM 16227 0 0 0 0 0 0 0 16-3584
+chrM 16228 0 0 0 0 0 0 0 16-3584
+chrM 16229 0 0 0 0 0 0 0 16-3584
+chrM 16230 0 0 0 0 0 0 0 16-3584
+chrM 16231 0 0 0 0 0 0 0 16-3584
+chrM 16232 0 0 0 0 0 0 0 16-3584
+chrM 16233 0 0 0 0 0 0 0 16-3584
+chrM 16234 0 0 0 0 0 0 0 16-3584
+chrM 16235 0 0 0 0 0 0 0 16-3584
+chrM 16236 0 0 0 0 0 0 0 16-3584
+chrM 16237 0 0 0 0 0 0 0 16-3584
+chrM 16238 0 0 0 0 0 0 0 16-3584
+chrM 16239 0 0 0 0 0 0 0 16-3584
+chrM 16240 0 0 0 0 0 0 0 16-3584
+chrM 16241 0 0 0 0 0 0 0 16-3584
+chrM 16242 0 0 0 0 0 0 0 16-3584
+chrM 16243 0 0 0 0 0 0 0 16-3584
+chrM 16244 0 0 0 0 0 0 0 16-3584
+chrM 16245 0 0 0 0 0 0 0 16-3584
+chrM 16246 0 0 0 0 0 0 0 16-3584
+chrM 16247 0 0 0 0 0 0 0 16-3584
+chrM 16248 0 0 0 0 0 0 0 16-3584
+chrM 16249 0 0 0 0 0 0 0 16-3584
+chrM 16250 0 0 0 0 0 0 0 16-3584
+chrM 16251 0 0 0 0 0 0 0 16-3584
+chrM 16252 0 0 0 0 0 0 0 16-3584
+chrM 16253 0 0 0 0 0 0 0 16-3584
+chrM 16254 0 0 0 0 0 0 0 16-3584
+chrM 16255 0 0 0 0 0 0 0 16-3584
+chrM 16256 0 0 0 0 0 0 0 16-3584
+chrM 16257 0 0 0 0 0 0 0 16-3584
+chrM 16258 0 0 0 0 0 0 0 16-3584
+chrM 16259 0 0 0 0 0 0 0 16-3584
+chrM 16260 0 0 0 0 0 0 0 16-3584
+chrM 16261 0 0 0 0 0 0 0 16-3584
+chrM 16262 0 0 0 0 0 0 0 16-3584
+chrM 16263 0 0 0 0 0 0 0 16-3584
+chrM 16264 0 0 0 0 0 0 0 16-3584
+chrM 16265 0 0 0 0 0 0 0 16-3584
+chrM 16266 0 0 0 0 0 0 0 16-3584
+chrM 16267 0 0 0 0 0 0 0 16-3584
+chrM 16268 0 0 0 0 0 0 0 16-3584
+chrM 16269 0 0 0 0 0 0 0 16-3584
+chrM 16270 0 0 0 0 0 0 0 16-3584
+chrM 16271 0 0 0 0 0 0 0 16-3584
+chrM 16272 0 0 0 0 0 0 0 16-3584
+chrM 16273 0 0 0 0 0 0 0 16-3584
+chrM 16274 0 0 0 0 0 0 0 16-3584
+chrM 16275 0 0 0 0 0 0 0 16-3584
+chrM 16276 0 0 0 0 0 0 0 16-3584
+chrM 16277 0 0 0 0 0 0 0 16-3584
+chrM 16278 0 0 0 0 0 0 0 16-3584
+chrM 16279 0 0 0 0 0 0 0 16-3584
+chrM 16280 0 0 0 0 0 0 0 16-3584
+chrM 16281 0 0 0 0 0 0 0 16-3584
+chrM 16282 0 0 0 0 0 0 0 16-3584
+chrM 16283 0 0 0 0 0 0 0 16-3584
+chrM 16284 0 0 0 0 0 0 0 16-3584
+chrM 16285 0 0 0 0 0 0 0 16-3584
+chrM 16286 0 0 0 0 0 0 0 16-3584
+chrM 16287 0 0 0 0 0 0 0 16-3584
+chrM 16288 0 0 0 0 0 0 0 16-3584
+chrM 16289 0 0 0 0 0 0 0 16-3584
+chrM 16290 0 0 0 0 0 0 0 16-3584
+chrM 16291 0 0 0 0 0 0 0 16-3584
+chrM 16292 0 0 0 0 0 0 0 16-3584
+chrM 16293 0 0 0 0 0 0 0 16-3584
+chrM 16294 0 0 0 0 0 0 0 16-3584
+chrM 16295 0 0 0 0 0 0 0 16-3584
+chrM 16296 0 0 0 0 0 0 0 16-3584
+chrM 16297 0 0 0 0 0 0 0 16-3584
+chrM 16298 0 0 0 0 0 0 0 16-3584
+chrM 16299 0 0 0 0 0 0 0 16-3584
+chrM 16300 0 0 0 0 0 0 0 16-3584
+chrM 16301 0 0 0 0 0 0 0 16-3584
+chrM 16302 0 0 0 0 0 0 0 16-3584
+chrM 16303 0 0 0 0 0 0 0 16-3584
+chrM 16304 0 0 0 0 0 0 0 16-3584
+chrM 16305 0 0 0 0 0 0 0 16-3584
+chrM 16306 0 0 0 0 0 0 0 16-3584
+chrM 16307 0 0 0 0 0 0 0 16-3584
+chrM 16308 0 0 0 0 0 0 0 16-3584
+chrM 16309 0 0 0 0 0 0 0 16-3584
+chrM 16310 0 0 0 0 0 0 0 16-3584
+chrM 16311 0 0 0 0 0 0 0 16-3584
+chrM 16312 0 0 0 0 0 0 0 16-3584
+chrM 16313 0 0 0 0 0 0 0 16-3584
+chrM 16314 0 0 0 0 0 0 0 16-3584
+chrM 16315 0 0 0 0 0 0 0 16-3584
+chrM 16316 0 0 0 0 0 0 0 16-3584
+chrM 16317 0 0 0 0 0 0 0 16-3584
+chrM 16318 0 0 0 0 0 0 0 16-3584
+chrM 16319 0 0 0 0 0 0 0 16-3584
+chrM 16320 0 0 0 0 0 0 0 16-3584
+chrM 16321 0 0 0 0 0 0 0 16-3584
+chrM 16322 0 0 0 0 0 0 0 16-3584
+chrM 16323 0 0 0 0 0 0 0 16-3584
+chrM 16324 0 0 0 0 0 0 0 16-3584
+chrM 16325 0 0 0 0 0 0 0 16-3584
+chrM 16326 0 0 0 0 0 0 0 16-3584
+chrM 16327 0 0 0 0 0 0 0 16-3584
+chrM 16328 0 0 0 0 0 0 0 16-3584
+chrM 16329 0 0 0 0 0 0 0 16-3584
+chrM 16330 0 0 0 0 0 0 0 16-3584
+chrM 16331 0 0 0 0 0 0 0 16-3584
+chrM 16332 0 0 0 0 0 0 0 16-3584
+chrM 16333 0 0 0 0 0 0 0 16-3584
+chrM 16334 0 0 0 0 0 0 0 16-3584
+chrM 16335 0 0 0 0 0 0 0 16-3584
+chrM 16336 0 0 0 0 0 0 0 16-3584
+chrM 16337 0 0 0 0 0 0 0 16-3584
+chrM 16338 0 0 0 0 0 0 0 16-3584
+chrM 16339 0 0 0 0 0 0 0 16-3584
+chrM 16340 0 0 0 0 0 0 0 16-3584
+chrM 16341 0 0 0 0 0 0 0 16-3584
+chrM 16342 0 0 0 0 0 0 0 16-3584
+chrM 16343 0 0 0 0 0 0 0 16-3584
+chrM 16344 0 0 0 0 0 0 0 16-3584
+chrM 16345 0 0 0 0 0 0 0 16-3584
+chrM 16346 0 0 0 0 0 0 0 16-3584
+chrM 16347 0 0 0 0 0 0 0 16-3584
+chrM 16348 0 0 0 0 0 0 0 16-3584
+chrM 16349 0 0 0 0 0 0 0 16-3584
+chrM 16350 0 0 0 0 0 0 0 16-3584
+chrM 16351 0 0 0 0 0 0 0 16-3584
+chrM 16352 0 0 0 0 0 0 0 16-3584
+chrM 16353 0 0 0 0 0 0 0 16-3584
+chrM 16354 0 0 0 0 0 0 0 16-3584
+chrM 16355 0 0 0 0 0 0 0 16-3584
+chrM 16356 0 0 0 0 0 0 0 16-3584
+chrM 16357 0 0 0 0 0 0 0 16-3584
+chrM 16358 0 0 0 0 0 0 0 16-3584
+chrM 16359 0 0 0 0 0 0 0 16-3584
+chrM 16360 0 0 0 0 0 0 0 16-3584
+chrM 16361 0 0 0 0 0 0 0 16-3584
+chrM 16362 0 0 0 0 0 0 0 16-3584
+chrM 16363 0 0 0 0 0 0 0 16-3584
+chrM 16364 0 0 0 0 0 0 0 16-3584
+chrM 16365 0 0 0 0 0 0 0 16-3584
+chrM 16366 0 0 0 0 0 0 0 16-3584
+chrM 16367 0 0 0 0 0 0 0 16-3584
+chrM 16368 0 0 0 0 0 0 0 16-3584
+chrM 16369 0 0 0 0 0 0 0 16-3584
+chrM 16370 0 0 0 0 0 0 0 16-3584
+chrM 16371 0 0 0 0 0 0 0 16-3584
+chrM 16372 0 0 0 0 0 0 0 16-3584
+chrM 16373 0 0 0 0 0 0 0 16-3584
+chrM 16374 0 0 0 0 0 0 0 16-3584
+chrM 16375 0 0 0 0 0 0 0 16-3584
+chrM 16376 0 0 0 0 0 0 0 16-3584
+chrM 16377 0 0 0 0 0 0 0 16-3584
+chrM 16378 0 0 0 0 0 0 0 16-3584
+chrM 16379 0 0 0 0 0 0 0 16-3584
+chrM 16380 0 0 0 0 0 0 0 16-3584
+chrM 16381 0 0 0 0 0 0 0 16-3584
+chrM 16382 0 0 0 0 0 0 0 16-3584
+chrM 16383 0 0 0 0 0 0 0 16-3584
+chrM 16384 0 0 0 0 0 0 0 16-3584
+chrM 16385 0 0 0 0 0 0 0 16-3584
+chrM 16386 0 0 0 0 0 0 0 16-3584
+chrM 16387 0 0 0 0 0 0 0 16-3584
+chrM 16388 0 0 0 0 0 0 0 16-3584
+chrM 16389 0 0 0 0 0 0 0 16-3584
+chrM 16390 0 0 0 0 0 0 0 16-3584
+chrM 16391 0 0 0 0 0 0 0 16-3584
+chrM 16392 0 0 0 0 0 0 0 16-3584
+chrM 16393 0 0 0 0 0 0 0 16-3584
+chrM 16394 0 0 0 0 0 0 0 16-3584
+chrM 16395 0 0 0 0 0 0 0 16-3584
+chrM 16396 0 0 0 0 0 0 0 16-3584
+chrM 16397 0 0 0 0 0 0 0 16-3584
+chrM 16398 0 0 0 0 0 0 0 16-3584
+chrM 16399 0 0 0 0 0 0 0 16-3584
+chrM 16400 0 0 0 0 0 0 0 16-3584
+chrM 16401 0 0 0 0 0 0 0 16-3584
+chrM 16402 0 0 0 0 0 0 0 16-3584
+chrM 16403 0 0 0 0 0 0 0 16-3584
+chrM 16404 0 0 0 0 0 0 0 16-3584
+chrM 16405 0 0 0 0 0 0 0 16-3584
+chrM 16406 0 0 0 0 0 0 0 16-3584
+chrM 16407 0 0 0 0 0 0 0 16-3584
+chrM 16408 0 0 0 0 0 0 0 16-3584
+chrM 16409 0 0 0 0 0 0 0 16-3584
+chrM 16410 0 0 0 0 0 0 0 16-3584
+chrM 16411 0 0 0 0 0 0 0 16-3584
+chrM 16412 0 0 0 0 0 0 0 16-3584
+chrM 16413 0 0 0 0 0 0 0 16-3584
+chrM 16414 0 0 0 0 0 0 0 16-3584
+chrM 16415 0 0 0 0 0 0 0 16-3584
+chrM 16416 0 0 0 0 0 0 0 16-3584
+chrM 16417 0 0 0 0 0 0 0 16-3584
+chrM 16418 0 0 0 0 0 0 0 16-3584
+chrM 16419 0 0 0 0 0 0 0 16-3584
+chrM 16420 0 0 0 0 0 0 0 16-3584
+chrM 16421 0 0 0 0 0 0 0 16-3584
+chrM 16422 0 0 0 0 0 0 0 16-3584
+chrM 16423 0 0 0 0 0 0 0 16-3584
+chrM 16424 0 0 0 0 0 0 0 16-3584
+chrM 16425 0 0 0 0 0 0 0 16-3584
+chrM 16426 0 0 0 0 0 0 0 16-3584
+chrM 16427 0 0 0 0 0 0 0 16-3584
+chrM 16428 0 0 0 0 0 0 0 16-3584
+chrM 16429 0 0 0 0 0 0 0 16-3584
+chrM 16430 0 0 0 0 0 0 0 16-3584
+chrM 16431 0 0 0 0 0 0 0 16-3584
+chrM 16432 0 0 0 0 0 0 0 16-3584
+chrM 16433 0 0 0 0 0 0 0 16-3584
+chrM 16434 0 0 0 0 0 0 0 16-3584
+chrM 16435 0 0 0 0 0 0 0 16-3584
+chrM 16436 0 0 0 0 0 0 0 16-3584
+chrM 16437 0 0 0 0 0 0 0 16-3584
+chrM 16438 0 0 0 0 0 0 0 16-3584
+chrM 16439 0 0 0 0 0 0 0 16-3584
+chrM 16440 0 0 0 0 0 0 0 16-3584
+chrM 16441 0 0 0 0 0 0 0 16-3584
+chrM 16442 0 0 0 0 0 0 0 16-3584
+chrM 16443 0 0 0 0 0 0 0 16-3584
+chrM 16444 0 0 0 0 0 0 0 16-3584
+chrM 16445 0 0 0 0 0 0 0 16-3584
+chrM 16446 0 0 0 0 0 0 0 16-3584
+chrM 16447 0 0 0 0 0 0 0 16-3584
+chrM 16448 0 0 0 0 0 0 0 16-3584
+chrM 16449 0 0 0 0 0 0 0 16-3584
+chrM 16450 0 0 0 0 0 0 0 16-3584
+chrM 16451 0 0 0 0 0 0 0 16-3584
+chrM 16452 0 0 0 0 0 0 0 16-3584
+chrM 16453 0 0 0 0 0 0 0 16-3584
+chrM 16454 0 0 0 0 0 0 0 16-3584
+chrM 16455 0 0 0 0 0 0 0 16-3584
+chrM 16456 0 0 0 0 0 0 0 16-3584
+chrM 16457 0 0 0 0 0 0 0 16-3584
+chrM 16458 0 0 0 0 0 0 0 16-3584
+chrM 16459 0 0 0 0 0 0 0 16-3584
+chrM 16460 0 0 0 0 0 0 0 16-3584
+chrM 16461 0 0 0 0 0 0 0 16-3584
+chrM 16462 0 0 0 0 0 0 0 16-3584
+chrM 16463 0 0 0 0 0 0 0 16-3584
+chrM 16464 0 0 0 0 0 0 0 16-3584
+chrM 16465 0 0 0 0 0 0 0 16-3584
+chrM 16466 0 0 0 0 0 0 0 16-3584
+chrM 16467 0 0 0 0 0 0 0 16-3584
+chrM 16468 0 0 0 0 0 0 0 16-3584
+chrM 16469 0 0 0 0 0 0 0 16-3584
+chrM 16470 0 0 0 0 0 0 0 16-3584
+chrM 16471 0 0 0 0 0 0 0 16-3584
+chrM 16472 0 0 0 0 0 0 0 16-3584
+chrM 16473 0 0 0 0 0 0 0 16-3584
+chrM 16474 0 0 0 0 0 0 0 16-3584
+chrM 16475 0 0 0 0 0 0 0 16-3584
+chrM 16476 0 0 0 0 0 0 0 16-3584
+chrM 16477 0 0 0 0 0 0 0 16-3584
+chrM 16478 0 0 0 0 0 0 0 16-3584
+chrM 16479 0 0 0 0 0 0 0 16-3584
+chrM 16480 0 0 0 0 0 0 0 16-3584
+chrM 16481 0 0 0 0 0 0 0 16-3584
+chrM 16482 0 0 0 0 0 0 0 16-3584
+chrM 16483 0 0 0 0 0 0 0 16-3584
+chrM 16484 0 0 0 0 0 0 0 16-3584
+chrM 16485 0 0 0 0 0 0 0 16-3584
+chrM 16486 0 0 0 0 0 0 0 16-3584
+chrM 16487 0 0 0 0 0 0 0 16-3584
+chrM 16488 0 0 0 0 0 0 0 16-3584
+chrM 16489 0 0 0 0 0 0 0 16-3584
+chrM 16490 0 0 0 0 0 0 0 16-3584
+chrM 16491 0 0 0 0 0 0 0 16-3584
+chrM 16492 0 0 0 0 0 0 0 16-3584
+chrM 16493 0 0 0 0 0 0 0 16-3584
+chrM 16494 0 0 0 0 0 0 0 16-3584
+chrM 16495 0 0 0 0 0 0 0 16-3584
+chrM 16496 0 0 0 0 0 0 0 16-3584
+chrM 16497 0 0 0 0 0 0 0 16-3584
+chrM 16498 0 0 0 0 0 0 0 16-3584
+chrM 16499 0 0 0 0 0 0 0 16-3584
+chrM 16500 0 0 0 0 0 0 0 16-3584
+chrM 16501 0 0 0 0 0 0 0 16-3584
+chrM 16502 0 0 0 0 0 0 0 16-3584
+chrM 16503 0 0 0 0 0 0 0 16-3584
+chrM 16504 0 0 0 0 0 0 0 16-3584
+chrM 16505 0 0 0 0 0 0 0 16-3584
+chrM 16506 0 0 0 0 0 0 0 16-3584
+chrM 16507 0 0 0 0 0 0 0 16-3584
+chrM 16508 0 0 0 0 0 0 0 16-3584
+chrM 16509 0 0 0 0 0 0 0 16-3584
+chrM 16510 0 0 0 0 0 0 0 16-3584
+chrM 16511 0 0 0 0 0 0 0 16-3584
+chrM 16512 0 0 0 0 0 0 0 16-3584
+chrM 16513 0 0 0 0 0 0 0 16-3584
+chrM 16514 0 0 0 0 0 0 0 16-3584
+chrM 16515 0 0 0 0 0 0 0 16-3584
+chrM 16516 0 0 0 0 0 0 0 16-3584
+chrM 16517 0 0 0 0 0 0 0 16-3584
+chrM 16518 0 0 0 0 0 0 0 16-3584
+chrM 16519 0 0 0 0 0 0 0 16-3584
+chrM 16520 0 0 0 0 0 0 0 16-3584
+chrM 16521 0 0 0 0 0 0 0 16-3584
+chrM 16522 0 0 0 0 0 0 0 16-3584
+chrM 16523 0 0 0 0 0 0 0 16-3584
+chrM 16524 0 0 0 0 0 0 0 16-3584
+chrM 16525 0 0 0 0 0 0 0 16-3584
+chrM 16526 0 0 0 0 0 0 0 16-3584
+chrM 16527 0 0 0 0 0 0 0 16-3584
+chrM 16528 0 0 0 0 0 0 0 16-3584
+chrM 16529 0 0 0 0 0 0 0 16-3584
+chrM 16530 0 0 0 0 0 0 0 16-3584
+chrM 16531 0 0 0 0 0 0 0 16-3584
+chrM 16532 0 0 0 0 0 0 0 16-3584
+chrM 16533 0 0 0 0 0 0 0 16-3584
+chrM 16534 0 0 0 0 0 0 0 16-3584
+chrM 16535 0 0 0 0 0 0 0 16-3584
+chrM 16536 0 0 0 0 0 0 0 16-3584
+chrM 16537 0 0 0 0 0 0 0 16-3584
+chrM 16538 0 0 0 0 0 0 0 16-3584
+chrM 16539 0 0 0 0 0 0 0 16-3584
+chrM 16540 0 0 0 0 0 0 0 16-3584
+chrM 16541 0 0 0 0 0 0 0 16-3584
+chrM 16542 0 0 0 0 0 0 0 16-3584
+chrM 16543 0 0 0 0 0 0 0 16-3584
+chrM 16544 0 0 0 0 0 0 0 16-3584
+chrM 16545 0 0 0 0 0 0 0 16-3584
+chrM 16546 0 0 0 0 0 0 0 16-3584
+chrM 16547 0 0 0 0 0 0 0 16-3584
+chrM 16548 0 0 0 0 0 0 0 16-3584
+chrM 16549 0 0 0 0 0 0 0 16-3584
+chrM 16550 0 0 0 0 0 0 0 16-3584
+chrM 16551 0 0 0 0 0 0 0 16-3584
+chrM 16552 0 0 0 0 0 0 0 16-3584
+chrM 16553 0 0 0 0 0 0 0 16-3584
+chrM 16554 0 0 0 0 0 0 0 16-3584
+chrM 16555 0 0 0 0 0 0 0 16-3584
+chrM 16556 0 0 0 0 0 0 0 16-3584
+chrM 16557 0 0 0 0 0 0 0 16-3584
+chrM 16558 0 0 0 0 0 0 0 16-3584
+chrM 16559 0 0 0 0 0 0 0 16-3584
+chrM 16560 0 0 0 0 0 0 0 16-3584
+chrM 16561 0 0 0 0 0 0 0 16-3584
+chrM 16562 0 0 0 0 0 0 0 16-3584
+chrM 16563 0 0 0 0 0 0 0 16-3584
+chrM 16564 0 0 0 0 0 0 0 16-3584
+chrM 16565 0 0 0 0 0 0 0 16-3584
+chrM 16566 0 0 0 0 0 0 0 16-3584
+chrM 16567 0 0 0 0 0 0 0 16-3584
+chrM 16568 0 0 0 0 0 0 0 16-3584
+chrM 16569 0 0 0 0 0 0 0 16-3584
+chrM 16570 0 0 0 0 0 0 0 16-3584
diff --git a/test/issue_193.bam b/test/issue_193.bam
new file mode 100644
index 0000000..53fe32d
Binary files /dev/null and b/test/issue_193.bam differ
diff --git a/test/issue_193.bam.bai b/test/issue_193.bam.bai
new file mode 100644
index 0000000..8d757ba
Binary files /dev/null and b/test/issue_193.bam.bai differ
diff --git a/test/issue_193_expected_output.txt b/test/issue_193_expected_output.txt
new file mode 100644
index 0000000..4a034f0
--- /dev/null
+++ b/test/issue_193_expected_output.txt
@@ -0,0 +1,255 @@
+REF POS COV A C G T DEL REFSKIP SAMPLE
+SuperContig_95000040 0 12 12 0 0 0 0 0 *
+SuperContig_95000040 1 12 0 0 0 12 0 0 *
+SuperContig_95000040 2 12 0 12 0 0 0 0 *
+SuperContig_95000040 3 12 0 12 0 0 0 0 *
+SuperContig_95000040 4 12 0 12 0 0 0 0 *
+SuperContig_95000040 5 12 0 0 0 12 0 0 *
+SuperContig_95000040 6 12 0 12 0 0 0 0 *
+SuperContig_95000040 7 12 12 0 0 0 0 0 *
+SuperContig_95000040 8 12 0 12 0 0 0 0 *
+SuperContig_95000040 9 12 0 0 0 12 0 0 *
+SuperContig_95000040 10 12 0 0 0 12 0 0 *
+SuperContig_95000040 11 12 0 12 0 0 0 0 *
+SuperContig_95000040 12 12 0 12 0 0 0 0 *
+SuperContig_95000040 13 12 0 12 0 0 0 0 *
+SuperContig_95000040 14 12 0 0 0 12 0 0 *
+SuperContig_95000040 15 12 0 0 12 0 0 0 *
+SuperContig_95000040 16 12 0 12 0 0 0 0 *
+SuperContig_95000040 17 12 12 0 0 0 0 0 *
+SuperContig_95000040 18 12 12 0 0 0 0 0 *
+SuperContig_95000040 19 12 0 12 0 0 0 0 *
+SuperContig_95000040 20 12 12 0 0 0 0 0 *
+SuperContig_95000040 21 13 0 13 0 0 0 0 *
+SuperContig_95000040 22 13 0 13 0 0 0 0 *
+SuperContig_95000040 23 13 0 0 0 13 0 0 *
+SuperContig_95000040 24 13 0 0 0 13 0 0 *
+SuperContig_95000040 25 13 0 0 0 13 0 0 *
+SuperContig_95000040 26 13 13 0 0 0 0 0 *
+SuperContig_95000040 27 14 0 14 0 0 0 0 *
+SuperContig_95000040 28 14 0 14 0 0 0 0 *
+SuperContig_95000040 29 14 0 14 0 0 0 0 *
+SuperContig_95000040 30 14 0 14 0 0 0 0 *
+SuperContig_95000040 31 14 0 0 14 0 0 0 *
+SuperContig_95000040 32 14 0 0 0 14 0 0 *
+SuperContig_95000040 33 14 0 0 14 0 0 0 *
+SuperContig_95000040 34 14 0 14 0 0 0 0 *
+SuperContig_95000040 35 14 0 0 0 14 0 0 *
+SuperContig_95000040 36 14 14 0 0 0 0 0 *
+SuperContig_95000040 37 14 0 14 0 0 0 0 *
+SuperContig_95000040 38 14 0 14 0 0 0 0 *
+SuperContig_95000040 39 14 0 14 0 0 0 0 *
+SuperContig_95000040 40 14 14 0 0 0 0 0 *
+SuperContig_95000040 41 14 0 0 14 0 0 0 *
+SuperContig_95000040 42 14 0 0 0 14 0 0 *
+SuperContig_95000040 43 14 14 0 0 0 0 0 *
+SuperContig_95000040 44 14 0 0 14 0 0 0 *
+SuperContig_95000040 45 14 0 14 0 0 0 0 *
+SuperContig_95000040 46 14 14 0 0 0 0 0 *
+SuperContig_95000040 47 14 0 0 0 14 0 0 *
+SuperContig_95000040 48 14 14 0 0 0 0 0 *
+SuperContig_95000040 49 14 0 0 0 14 0 0 *
+SuperContig_95000040 50 14 14 0 0 0 0 0 *
+SuperContig_95000040 51 14 0 0 0 14 0 0 *
+SuperContig_95000040 52 14 14 0 0 0 0 0 *
+SuperContig_95000040 53 14 0 0 14 0 0 0 *
+SuperContig_95000040 54 14 14 0 0 0 0 0 *
+SuperContig_95000040 55 14 14 0 0 0 0 0 *
+SuperContig_95000040 56 14 0 0 14 0 0 0 *
+SuperContig_95000040 57 14 0 14 0 0 0 0 *
+SuperContig_95000040 58 14 0 0 0 14 0 0 *
+SuperContig_95000040 59 14 0 14 0 0 0 0 *
+SuperContig_95000040 60 14 0 14 0 0 0 0 *
+SuperContig_95000040 61 14 14 0 0 0 0 0 *
+SuperContig_95000040 62 14 0 14 0 0 0 0 *
+SuperContig_95000040 63 14 0 14 0 0 0 0 *
+SuperContig_95000040 64 14 0 14 0 0 0 0 *
+SuperContig_95000040 65 13 0 13 0 0 0 0 *
+SuperContig_95000040 66 12 0 12 0 0 0 0 *
+SuperContig_95000040 67 12 0 12 0 0 0 0 *
+SuperContig_95000040 68 12 0 12 0 0 0 0 *
+SuperContig_95000040 69 8 0 0 0 8 0 0 *
+SuperContig_95000040 70 5 0 5 0 0 0 0 *
+SuperContig_95000040 71 4 0 4 0 0 0 0 *
+SuperContig_95000040 72 3 0 0 0 3 0 0 *
+SuperContig_95000040 73 1 0 0 0 1 0 0 *
+SuperContig_95000193 0 1 0 0 1 0 0 0 *
+SuperContig_95000193 1 1 0 0 1 0 0 0 *
+SuperContig_95000193 2 1 0 0 1 0 0 0 *
+SuperContig_95000193 3 1 1 0 0 0 0 0 *
+SuperContig_95000193 4 1 0 0 1 0 0 0 *
+SuperContig_95000193 5 1 1 0 0 0 0 0 *
+SuperContig_95000193 6 1 1 0 0 0 0 0 *
+SuperContig_95000193 7 1 0 0 1 0 0 0 *
+SuperContig_95000193 8 1 1 0 0 0 0 0 *
+SuperContig_95000193 9 1 0 0 1 0 0 0 *
+SuperContig_95000193 10 1 1 0 0 0 0 0 *
+SuperContig_95000193 11 1 0 0 1 0 0 0 *
+SuperContig_95000193 12 1 0 0 1 0 0 0 *
+SuperContig_95000193 13 1 1 0 0 0 0 0 *
+SuperContig_95000193 14 1 1 0 0 0 0 0 *
+SuperContig_95000193 15 1 1 0 0 0 0 0 *
+SuperContig_95000193 16 1 0 0 1 0 0 0 *
+SuperContig_95000193 17 1 0 0 1 0 0 0 *
+SuperContig_95000193 18 1 1 0 0 0 0 0 *
+SuperContig_95000193 19 1 0 0 1 0 0 0 *
+SuperContig_95000193 20 1 0 0 1 0 0 0 *
+SuperContig_95000193 21 1 1 0 0 0 0 0 *
+SuperContig_95000193 22 1 0 0 1 0 0 0 *
+SuperContig_95000193 23 1 1 0 0 0 0 0 *
+SuperContig_95000193 24 1 1 0 0 0 0 0 *
+SuperContig_95000193 25 1 1 0 0 0 0 0 *
+SuperContig_95000193 26 1 0 0 1 0 0 0 *
+SuperContig_95000193 27 1 1 0 0 0 0 0 *
+SuperContig_95000193 28 1 0 0 1 0 0 0 *
+SuperContig_95000193 29 1 0 0 1 0 0 0 *
+SuperContig_95000193 30 1 0 0 1 0 0 0 *
+SuperContig_95000193 31 1 1 0 0 0 0 0 *
+SuperContig_95000193 32 1 0 0 1 0 0 0 *
+SuperContig_95000193 33 1 0 0 1 0 0 0 *
+SuperContig_95000193 34 1 0 0 1 0 0 0 *
+SuperContig_95000193 35 1 0 0 1 0 0 0 *
+SuperContig_95000193 36 1 0 0 1 0 0 0 *
+SuperContig_95000193 37 1 0 0 1 0 0 0 *
+SuperContig_95000193 38 1 0 0 0 1 0 0 *
+SuperContig_95000193 39 1 1 0 0 0 0 0 *
+SuperContig_95000193 40 1 0 0 1 0 0 0 *
+SuperContig_95000193 41 1 0 1 0 0 0 0 *
+SuperContig_95000193 42 1 0 0 0 1 0 0 *
+SuperContig_95000193 43 1 0 0 1 0 0 0 *
+SuperContig_95000193 44 1 1 0 0 0 0 0 *
+SuperContig_95000193 45 1 1 0 0 0 0 0 *
+SuperContig_95000193 46 1 0 0 1 0 0 0 *
+SuperContig_95000193 47 1 0 0 0 1 0 0 *
+SuperContig_95000193 48 1 1 0 0 0 0 0 *
+SuperContig_95000193 49 1 0 0 1 0 0 0 *
+SuperContig_95000193 50 1 0 0 1 0 0 0 *
+SuperContig_95000193 51 1 0 0 1 0 0 0 *
+SuperContig_95000193 52 1 0 0 0 1 0 0 *
+SuperContig_95000193 53 1 0 1 0 0 0 0 *
+SuperContig_95000193 54 1 1 0 0 0 0 0 *
+SuperContig_95000193 55 1 0 0 1 0 0 0 *
+SuperContig_95000193 56 1 0 1 0 0 0 0 *
+SuperContig_95000193 57 1 1 0 0 0 0 0 *
+SuperContig_95000193 58 1 1 0 0 0 0 0 *
+SuperContig_95000193 59 1 0 0 1 0 0 0 *
+SuperContig_95000193 60 1 0 1 0 0 0 0 *
+SuperContig_95000193 61 1 1 0 0 0 0 0 *
+SuperContig_95000425 0 12 12 0 0 0 0 0 *
+SuperContig_95000425 1 14 14 0 0 0 0 0 *
+SuperContig_95000425 2 14 14 0 0 0 0 0 *
+SuperContig_95000425 3 15 0 0 0 15 0 0 *
+SuperContig_95000425 4 16 16 0 0 0 0 0 *
+SuperContig_95000425 5 18 18 0 0 0 0 0 *
+SuperContig_95000425 6 19 19 0 0 0 0 0 *
+SuperContig_95000425 7 23 23 0 0 0 0 0 *
+SuperContig_95000425 8 35 0 0 0 35 0 0 *
+SuperContig_95000425 9 45 45 0 0 0 0 0 *
+SuperContig_95000425 10 50 0 50 0 0 0 0 *
+SuperContig_95000425 11 55 51 4 0 0 0 0 *
+SuperContig_95000425 12 57 57 0 0 0 0 0 *
+SuperContig_95000425 13 58 0 0 58 0 0 0 *
+SuperContig_95000425 14 58 0 0 0 58 0 0 *
+SuperContig_95000425 15 60 60 0 0 0 0 0 *
+SuperContig_95000425 16 60 0 0 60 0 0 0 *
+SuperContig_95000425 17 60 60 0 0 0 0 0 *
+SuperContig_95000425 18 60 60 0 0 0 0 0 *
+SuperContig_95000425 19 60 0 0 60 0 0 0 *
+SuperContig_95000425 20 60 60 0 0 0 0 0 *
+SuperContig_95000425 21 60 0 60 0 0 0 0 *
+SuperContig_95000425 22 60 60 0 0 0 0 0 *
+SuperContig_95000425 23 60 0 0 60 0 0 0 *
+SuperContig_95000425 24 60 56 0 0 0 4 0 *
+SuperContig_95000425 25 60 60 0 0 0 0 0 *
+SuperContig_95000425 26 60 60 0 0 0 0 0 *
+SuperContig_95000425 27 60 60 0 0 0 0 0 *
+SuperContig_95000425 28 60 60 0 0 0 0 0 *
+SuperContig_95000425 29 60 60 0 0 0 0 0 *
+SuperContig_95000425 30 60 60 0 0 0 0 0 *
+SuperContig_95000425 31 60 0 0 60 0 0 0 *
+SuperContig_95000425 32 60 0 0 0 60 0 0 *
+SuperContig_95000425 33 60 60 0 0 0 0 0 *
+SuperContig_95000425 34 60 60 0 0 0 0 0 *
+SuperContig_95000425 35 60 60 0 0 0 0 0 *
+SuperContig_95000425 36 60 60 0 0 0 0 0 *
+SuperContig_95000425 37 60 60 0 0 0 0 0 *
+SuperContig_95000425 38 60 0 0 60 0 0 0 *
+SuperContig_95000425 39 60 0 17 43 0 0 0 *
+SuperContig_95000425 40 60 60 0 0 0 0 0 *
+SuperContig_95000425 41 60 60 0 0 0 0 0 *
+SuperContig_95000425 42 60 60 0 0 0 0 0 *
+SuperContig_95000425 43 60 60 0 0 0 0 0 *
+SuperContig_95000425 44 60 60 0 0 0 0 0 *
+SuperContig_95000425 45 63 63 0 0 0 0 0 *
+SuperContig_95000425 46 63 0 0 0 63 0 0 *
+SuperContig_95000425 47 63 63 0 0 0 0 0 *
+SuperContig_95000425 48 63 0 0 0 63 0 0 *
+SuperContig_95000425 49 63 63 0 0 0 0 0 *
+SuperContig_95000425 50 63 0 0 0 63 0 0 *
+SuperContig_95000425 51 63 63 0 0 0 0 0 *
+SuperContig_95000425 52 63 63 0 0 0 0 0 *
+SuperContig_95000425 53 63 63 0 0 0 0 0 *
+SuperContig_95000425 54 63 63 0 0 0 0 0 *
+SuperContig_95000425 55 63 43 0 17 0 3 0 *
+SuperContig_95000425 56 63 0 0 60 0 3 0 *
+SuperContig_95000425 57 63 0 0 0 63 0 0 *
+SuperContig_95000425 58 63 0 0 0 63 0 0 *
+SuperContig_95000425 59 63 63 0 0 0 0 0 *
+SuperContig_95000425 60 63 46 0 0 0 17 0 *
+SuperContig_95000425 61 63 0 0 0 46 17 0 *
+SuperContig_95000425 62 63 46 0 0 0 17 0 *
+SuperContig_95000425 63 63 0 0 46 0 17 0 *
+SuperContig_95000425 64 63 0 46 0 0 17 0 *
+SuperContig_95000425 65 63 0 46 0 0 17 0 *
+SuperContig_95000425 66 63 46 0 0 0 17 0 *
+SuperContig_95000425 67 63 0 46 0 0 17 0 *
+SuperContig_95000425 68 63 0 46 0 0 17 0 *
+SuperContig_95000425 69 63 0 0 0 46 17 0 *
+SuperContig_95000425 70 63 0 0 46 0 17 0 *
+SuperContig_95000425 71 63 0 0 0 46 17 0 *
+SuperContig_95000425 72 63 0 0 0 46 17 0 *
+SuperContig_95000425 73 63 63 0 0 0 0 0 *
+SuperContig_95000425 74 63 63 0 0 0 0 0 *
+SuperContig_95000425 75 63 63 0 0 0 0 0 *
+SuperContig_95000425 76 63 63 0 0 0 0 0 *
+SuperContig_95000425 77 63 63 0 0 0 0 0 *
+SuperContig_95000425 78 63 0 0 0 63 0 0 *
+SuperContig_95000425 79 63 0 0 60 0 3 0 *
+SuperContig_95000425 80 63 0 63 0 0 0 0 *
+SuperContig_95000425 81 63 0 63 0 0 0 0 *
+SuperContig_95000425 82 63 0 63 0 0 0 0 *
+SuperContig_95000425 83 63 0 0 0 63 0 0 *
+SuperContig_95000425 84 63 0 63 0 0 0 0 *
+SuperContig_95000425 85 63 0 63 0 0 0 0 *
+SuperContig_95000425 86 63 0 0 0 63 0 0 *
+SuperContig_95000425 87 63 46 0 17 0 0 0 *
+SuperContig_95000425 88 63 63 0 0 0 0 0 *
+SuperContig_95000425 89 63 0 0 0 63 0 0 *
+SuperContig_95000425 90 63 63 0 0 0 0 0 *
+SuperContig_95000425 91 63 0 0 0 63 0 0 *
+SuperContig_95000425 92 63 0 0 63 0 0 0 *
+SuperContig_95000425 93 63 0 0 63 0 0 0 *
+SuperContig_95000425 94 63 0 63 0 0 0 0 *
+SuperContig_95000425 95 63 63 0 0 0 0 0 *
+SuperContig_95000425 96 63 63 0 0 0 0 0 *
+SuperContig_95000425 97 63 0 63 0 0 0 0 *
+SuperContig_95000425 98 62 60 0 2 0 0 0 *
+SuperContig_95000425 99 62 62 0 0 0 0 0 *
+SuperContig_95000425 100 62 0 62 0 0 0 0 *
+SuperContig_95000425 101 62 62 0 0 0 0 0 *
+SuperContig_95000425 102 62 60 2 0 0 0 0 *
+SuperContig_95000425 103 59 0 58 0 1 0 0 *
+SuperContig_95000425 104 55 55 0 0 0 0 0 *
+SuperContig_95000425 105 51 48 0 0 3 0 0 *
+SuperContig_95000425 106 44 0 44 0 0 0 0 *
+SuperContig_95000425 107 34 0 34 0 0 0 0 *
+SuperContig_95000425 108 28 0 0 28 0 0 0 *
+SuperContig_95000425 109 17 0 17 0 0 0 0 *
+SuperContig_95000425 110 12 2 0 10 0 0 0 *
+SuperContig_95000425 111 11 0 0 11 0 0 0 *
+SuperContig_95000425 112 8 0 8 0 0 0 0 *
+SuperContig_95000425 113 5 5 0 0 0 0 0 *
+SuperContig_95000425 114 3 3 0 0 0 0 0 *
+SuperContig_95000425 115 3 0 3 0 0 0 0 *
+SuperContig_95000425 116 2 2 0 0 0 0 0 *
+SuperContig_95000425 117 1 0 0 1 0 0 0 *
diff --git a/test/issue_204.bam b/test/issue_204.bam
new file mode 100644
index 0000000..db895df
Binary files /dev/null and b/test/issue_204.bam differ
diff --git a/test/issue_204.bam.bai b/test/issue_204.bam.bai
new file mode 100644
index 0000000..e8d0956
Binary files /dev/null and b/test/issue_204.bam.bai differ
diff --git a/test/issue_204_expected_output.txt b/test/issue_204_expected_output.txt
new file mode 100644
index 0000000..12486d9
--- /dev/null
+++ b/test/issue_204_expected_output.txt
@@ -0,0 +1,2 @@
+# chrom chromStart chromEnd readCount meanCoverage percentage15 percentage20 percentage25 sampleName
+2 166868599 166868813 29 17.8084 89.7196 29.9065 0 12878
diff --git a/test/mate_overlaps_1_3M_4M.bam b/test/mate_overlaps_1_3M_4M.bam
new file mode 100644
index 0000000..dc4bee6
Binary files /dev/null and b/test/mate_overlaps_1_3M_4M.bam differ
diff --git a/test/mate_overlaps_1_3M_4M.bam.bai b/test/mate_overlaps_1_3M_4M.bam.bai
new file mode 100644
index 0000000..ead2a90
Binary files /dev/null and b/test/mate_overlaps_1_3M_4M.bam.bai differ
diff --git a/test/mate_overlaps_1_3M_4M.bed b/test/mate_overlaps_1_3M_4M.bed
new file mode 100644
index 0000000..d6ef378
--- /dev/null
+++ b/test/mate_overlaps_1_3M_4M.bed
@@ -0,0 +1,5 @@
+1 3092600 3092700
+1 3495400 3495500
+1 3098100 3098200
+1 3418600 3418700
+1 3418500 3418650
\ No newline at end of file
diff --git a/test/test_depth.py b/test/test_depth.py
new file mode 100644
index 0000000..118f543
--- /dev/null
+++ b/test/test_depth.py
@@ -0,0 +1,126 @@
+import msgpack
+
+import subprocess
+import os.path
+import random
+import tempfile
+import csv
+
+sambamba = os.path.join(os.path.abspath(os.path.dirname(__file__)), '../build/sambamba')
+
+def referenceSequences(bam_fn):
+ header = subprocess.check_output([sambamba, "view", "-H", bam_fn,
+ "-f", "msgpack"])
+ return {item['SN']: item['LN'] for item in msgpack.unpackb(header)[2]}
+
+def randomIntervals(ref_seqs, n, max_length=1000):
+ keys = ref_seqs.keys()
+ result = []
+ for i in range(n):
+ overlap = i > 0 and random.randint(1, 100) <= 20
+ if overlap:
+ ref, start, e = random.choice(result)
+ start += random.randint(0, (e - start - 1))
+ else:
+ ref = random.choice(keys)
+ length = ref_seqs[ref]
+ start = random.randint(1, length)
+ end = start + random.randint(1, max_length)
+ result.append((ref, start, end))
+ return result
+
+def writeBed(intervals, bedfile):
+ for ref, start, end in intervals:
+ bedfile.write("{}\t{}\t{}\n".format(ref, start, end))
+ bedfile.flush()
+
+def depthRegionReport(bam_fn, intervals):
+ with tempfile.NamedTemporaryFile("w+") as bed:
+ writeBed(intervals, bed)
+ devnull = open("/dev/null", "w")
+ res = subprocess.check_output([sambamba, "depth", "region", "-t", "0",
+ "--combined",
+ bam_fn, "-L", bed.name, "-F", ""],
+ stderr=devnull)
+ lst = list(csv.DictReader(res[2:].split("\n"), dialect='excel-tab'))
+ return [(i['chrom'], int(i['chromStart']), int(i['chromEnd']),
+ i['readCount']) for i in lst]
+
+def expectedRegionReport(bam_fn, intervals):
+ report = []
+ for ref, start, end in intervals:
+ # coordinate translation: half-open zero-based -> closed 1-based
+ cov = subprocess.check_output([sambamba, "view", bam_fn, "-c",
+ "-t", "0",
+ "{}:{}-{}".format(ref, start+1, end)])
+ report.append((ref, start, end, cov.strip()))
+ return report
+
+def saveRegionReport(report, fn):
+ with open(fn, "w+") as f:
+ for fields in report:
+ f.write("{}\t{}\t{}\t{}\n".format(*fields))
+
+def depthBaseReport(bam_fn, intervals):
+ with tempfile.NamedTemporaryFile("w+") as bed:
+ writeBed(intervals, bed)
+ devnull = open("/dev/null", "w")
+ res = subprocess.check_output([sambamba, "depth", "base", "-t", "0",
+ "--combined",
+ bam_fn, "-L", bed.name, "-F", "", "-z"],
+ stderr=devnull)
+ lst = list(csv.DictReader(res.split("\n"), dialect='excel-tab'))
+ return [(i['REF'], int(i['POS']), int(i['COV'])) for i in lst]
+
+bam_fn = "dm3PacBio_valid.bam"
+
+# minor differences are still possible e.g. when region is wholly inside a deletion,
+# but they are quite rare and can be checked manually
+def test_depth_region():
+ refs = referenceSequences(bam_fn)
+
+ intervals = list(randomIntervals(refs, 10000, 1000))
+ report = depthRegionReport(bam_fn, intervals)
+ expected = expectedRegionReport(bam_fn, intervals)
+
+ return compareResults(report, expected, "region_")
+
+def compareResults(report, expected, prefix):
+ n_correct = 0
+ n_wrong = 0
+ for expected_entry, entry in zip(expected, report):
+ if entry != expected_entry:
+ if n_wrong == 0:
+ fn_failed = prefix + "failed_report.txt"
+ fn_expected = prefix + "expected_report.txt"
+ saveRegionReport(report, fn_failed)
+ saveRegionReport(expected, fn_expected)
+ print 'TEST FAILURE'
+ print "results saved to " + fn_expected + " and " + fn_failed
+ print "different results:"
+ print "expected: ", expected_entry
+ print "got: ", entry
+ n_wrong += 1
+ if n_wrong >= 10:
+ print "10 or more errors detected, exiting"
+ break
+ else:
+ n_correct += 1
+
+ return n_correct == len(expected)
+
+def test_depth_base():
+ refs = referenceSequences(bam_fn)
+ intervals = list(randomIntervals(refs, 1000, 100))
+ report = depthBaseReport(bam_fn, intervals)
+ expected = []
+ for ref, pos, count in report:
+ cov = subprocess.check_output([sambamba, "view", bam_fn, "-c",
+ "-t", "0",
+ "{}:{}-{}".format(ref, pos+1, pos+1)])
+ cov = int(cov.strip())
+ expected.append((ref, pos, cov))
+
+ return compareResults(report, expected, "base_")
+
+test_depth_base()
diff --git a/thirdparty/mergesort.d b/thirdparty/mergesort.d
new file mode 100644
index 0000000..01693b1
--- /dev/null
+++ b/thirdparty/mergesort.d
@@ -0,0 +1,221 @@
+/++
+ Merge Sort for Random-Access Ranges
+
+ Written and tested for DMD 2.059 and Phobos
+
+ Authors: Xinok
+ License: Public Domain
+
+ Bugs:
+ Parallel sort fails to compile in debug builds
+
+ -------------------------------
+ March, 2013: added support for custom task pool //lomereiter
+++/
+
+module thirdparty.mergesort;
+import std.range, std.algorithm, std.functional, std.array, std.parallelism;
+
+/++
+ Performs a merge sort on a random-access range according to predicate less.
+
+ Returns: Sorted input as SortedRange
+
+ Params:
+ half = Set to true to merge using O(n/2) additional space, or false for O(n)
+ task_pool = Thread pool to use
+ temp = Optionally provide your own additional space for sorting
+
+ Examples:
+ -----------------
+ int[] array = [10, 37, 74, 99, 86, 28, 17, 39, 18, 38, 70];
+ mergeSort(array);
+ mergeSort!"a > b"(array); // Sorts array descending
+ TaskPool pool = new TaskPool();
+ scope(exit) pool.finish();
+ mergeSort(array, pool); // Sorts array using custom task pool
+
+ int[] temp;
+ temp.length = 64;
+ mergeSort(array, pool, temp); // Sorts array using temporary memory provided by user
+ -----------------
+++/
+
+ at trusted SortedRange!(R, less) mergeSort(alias less = "a < b", bool half = true, R)(R range, TaskPool task_pool=taskPool, R temp = null)
+{
+ static assert(isRandomAccessRange!R);
+ static assert(hasLength!R);
+ static assert(hasSlicing!R);
+ static assert(hasAssignableElements!R);
+
+ MergeSortImpl!(less, half, R).sort(range, task_pool, temp);
+
+ if(!__ctfe) assert(isSorted!(less)(range.save), "Range is not sorted");
+ return assumeSorted!(less, R)(range.save);
+}
+
+/// Merge Sort implementation
+template MergeSortImpl(alias pred, bool half, R)
+{
+ static assert(isRandomAccessRange!R);
+ static assert(hasLength!R);
+ static assert(hasSlicing!R);
+ static assert(hasAssignableElements!R);
+
+ alias ElementType!R T;
+
+ alias binaryFun!pred less;
+ bool greater(T a, T b){ return less(b, a); }
+ bool greaterEqual(T a, T b){ return !less(a, b); }
+ bool lessEqual(T a, T b){ return !less(b, a); }
+
+ enum MAX_INSERT = 32; // Maximum length for an insertion sort
+ enum MIN_THREAD = 1024 * 64; // Minimum length of a sublist to initiate new thread
+
+ /// Entry point for merge sort
+ void sort(R range, TaskPool task_pool, T[] temp)
+ {
+ static if(half)
+ {
+ if(temp.length < range.length / 2) temp.length = range.length / 2;
+ }
+ else
+ {
+ if(temp.length < range.length) temp.length = range.length;
+ }
+
+ concSort(range, task_pool, task_pool.size, temp);
+ }
+
+ /// Concurrently sort range
+ void concSort(R range, TaskPool task_pool, size_t threadCount, T[] temp)
+ {
+ if(threadCount < 2 || range.length < MIN_THREAD)
+ {
+ split(range, temp);
+ return;
+ }
+
+ debug
+ {
+ //@ Threading code currently does not compile in debug builds
+ split(range, temp);
+ }
+ else
+ {
+ immutable mid = range.length / 2;
+ auto th = task!(concSort)(range[0 .. mid], task_pool, threadCount / 2, temp[0 .. $ / 2]);
+ task_pool.put(th);
+ concSort(range[mid .. range.length], task_pool, threadCount - (threadCount / 2), temp[$ / 2 .. $]);
+ th.workForce();
+ merge(range, mid, temp);
+ }
+ }
+
+
+ /// Recursively split range and merge halves
+ void split(R range, T[] temp)
+ {
+ if(range.length <= MAX_INSERT)
+ {
+ binaryInsertionSort(range);
+ return;
+ }
+ immutable mid = range.length / 2;
+ split(range[0 .. mid], temp);
+ split(range[mid .. range.length], temp);
+ merge(range, mid, temp);
+ }
+
+ /// Merge two halves using temp
+ static if(half)
+ void merge(R range, immutable size_t mid, T[] temp)
+ {
+ assert(mid <= range.length);
+ assert(temp.length >= range.length / 2);
+
+ temp = temp[0 .. mid];
+ copy(range[0..mid], temp);
+
+ size_t i = 0, lef = 0, rig = mid;
+
+ while(true)
+ {
+ if(lessEqual(temp[lef], range[rig]))
+ {
+ range[i++] = temp[lef++];
+ if(lef >= temp.length) return;
+ }
+ else
+ {
+ range[i++] = range[rig++];
+ if(rig >= range.length) while(true)
+ {
+ range[i++] = temp[lef++];
+ if(lef >= temp.length) return;
+ }
+ }
+ }
+ }
+
+ static if(!half)
+ void merge(R range, immutable size_t mid, T[] temp)
+ {
+ assert(mid <= range.length);
+ assert(temp.length >= range.length);
+
+ size_t i = 0, lef = 0, rig = mid;
+ while(true)
+ {
+ if(lessEqual(range[lef], range[rig]))
+ {
+ temp[i++] = range[lef++];
+ if(lef >= mid) break;
+ }
+ else
+ {
+ temp[i++] = range[rig++];
+ if(rig >= range.length)
+ {
+ while(lef < mid) temp[i++] = range[lef++];
+ break;
+ }
+ }
+ }
+ copy(temp[0 .. i], range[0 .. i]);
+ }
+
+ /// A simple insertion sort used for sorting small sublists
+ void binaryInsertionSort(R range)
+ {
+ size_t lower, upper, center;
+ T o;
+ foreach(i; 0 .. range.length)
+ {
+ o = range[i];
+ lower = 0;
+ upper = i;
+ while(upper != lower)
+ {
+ center = (lower + upper) / 2;
+ if(less(o, range[center])) upper = center;
+ else lower = center + 1;
+ }
+ for(upper = i; upper > lower; --upper) range[upper] = range[upper-1];
+ range[upper] = o;
+ }
+ }
+
+ //@ Workaround for DMD issue 7898
+ static if(__VERSION__ == 2059)
+ void copy(R1, R2)(R1 src, R2 dst)
+ {
+ import std.traits;
+ static if(isArray!R1 && isArray!R2) if(__ctfe)
+ {
+ dst[] = src[];
+ return;
+ }
+ std.algorithm.copy(src, dst);
+ }
+}
diff --git a/thirdparty/unstablesort.d b/thirdparty/unstablesort.d
new file mode 100644
index 0000000..f4245ce
--- /dev/null
+++ b/thirdparty/unstablesort.d
@@ -0,0 +1,328 @@
+/++
+ Unstable Sort for Random-Access Ranges
+
+ Written and tested for DMD 2.058 and Phobos
+
+ Authors: Xinok
+ License: Public Domain
+++/
+
+module thirdparty.unstablesort;
+import std.range, std.algorithm, std.functional, std.parallelism;
+
+/++
+ Performs an unstable sort on a random-access range according to predicate less.
+ The algorithm is a quick sort which resorts to heap sort to avoid worst-case.
+
+ Returns: Sorted input as SortedRange
+
+ Params:
+ range = Range to be sorted
+ pool = Task pool to use
+
+ Params:
+ less = Predicate (string, function, or delegate) used for comparing elements; Defaults to "a < b"
+ R = Type of range to be sorted; Must be a finite random-access range with slicing
+
+ Examples:
+ -----------------
+ int[] array = [10, 37, 74, 99, 86, 28, 17, 39, 18, 38, 70];
+ unstableSort(array, taskPool); // Sorts array using multiple threads
+ -----------------
+++/
+
+ at trusted SortedRange!(R, less) unstableSort(alias less = "a < b", R)(R range, TaskPool pool)
+{
+ static assert(isRandomAccessRange!R);
+ static assert(hasLength!R);
+ static assert(hasSlicing!R);
+ static assert(hasAssignableElements!R);
+
+ UnstableSortImpl!(less, R).sort(range, pool);
+
+ assert(isSorted!(less)(range.save), "Range is not sorted");
+ return assumeSorted!(less, R)(range.save);
+}
+
+/// Unstable sort implementation
+template UnstableSortImpl(alias pred, R)
+{
+ static assert(isRandomAccessRange!R);
+ static assert(hasLength!R);
+ static assert(hasSlicing!R);
+ static assert(hasAssignableElements!R);
+
+ alias ElementType!R T;
+
+ alias binaryFun!pred less;
+ bool greater(T a, T b){ return less(b, a); }
+ bool greaterEqual(T a, T b){ return !less(a, b); }
+ bool lessEqual(T a, T b){ return !less(b, a); }
+
+ enum MAX_INSERT = 32; // Maximum length for an insertion sort
+ enum MIN_THREAD = 1024 * 64; // Minimum length of a sublist to initiate new thread
+
+ /// Entry sort function
+ void sort(R range, TaskPool pool)
+ {
+ concSort(range, range.length, pool);
+ }
+
+ /// Recursively partition list
+ void sort(R range, real depth, TaskPool pool)
+ {
+ while(true)
+ {
+ if(range.length <= MAX_INSERT)
+ {
+ binaryInsertionSort(range);
+ return;
+ }
+ if(depth < 1.0)
+ {
+ heapSort(range);
+ return;
+ }
+
+ depth /= 1.5;
+
+ immutable mid = partition(range);
+
+ if(mid <= range.length / 2)
+ {
+ sort(range[0 .. mid - 1], depth, pool);
+ range = range[mid .. range.length];
+ }
+ else
+ {
+ sort(range[mid .. range.length], depth, pool);
+ range = range[0 .. mid - 1];
+ }
+ }
+ }
+
+ /// Concurrently sorts range
+ void concSort(R range, real depth, TaskPool pool)
+ {
+ if(range.length < MIN_THREAD)
+ {
+ sort(range, depth, pool);
+ return;
+ }
+ if(depth < 1.0)
+ {
+ heapSort(range);
+ return;
+ }
+
+ depth /= 1.5;
+
+ immutable mid = partition(range);
+
+ auto th = task!(concSort)(range[0 .. mid - 1], depth, pool);
+ pool.put(th);
+ concSort(range[mid .. range.length], depth, pool);
+ th.workForce();
+ }
+
+ /// Partitions range, returns starting index of second range excluding pivot
+ size_t partition(R range)
+ {
+ // Get median of five
+ immutable b = range.length / 4, c = range.length / 2, d = b + c;
+ medianSort(range[0], range[b], range[c], range[d], range[range.length - 1]);
+
+ // Move first elements into place
+ swap(range[1], range[b]);
+ swap(range[2], range[c]);
+ swap(range[range.length - 2], range[d]);
+
+ // Variables
+ T piv = range[2], o;
+ size_t lef = 3, rig = range.length - 3;
+
+ // Partition range
+ while(lef < rig)
+ {
+ if(lessEqual(range[lef], piv)) ++lef;
+ else
+ {
+ o = range[lef];
+ range[lef] = range[rig];
+ range[rig] = o;
+ --rig;
+ }
+
+ // Checking for equality on both sides ensures a balanced
+ // distribution of equal elements in both partitions
+ if(greaterEqual(range[rig], piv)) --rig;
+ else
+ {
+ o = range[lef];
+ range[lef] = range[rig];
+ range[rig] = o;
+ ++lef;
+ }
+ }
+
+ // This step is necessary to ensure pivot is inserted at correct location
+ if(lessEqual(range[lef], piv)) ++lef;
+ // Move pivot into place
+ swap(range[lef - 1], range[2]);
+
+ return lef;
+ }
+
+ /// Finds the median of five in six comparisons while satisfiying the condition:
+ /// (a < c && b < c && c < d && d < e)
+ void medianSort(ref T a, ref T b, ref T c, ref T d, ref T e)
+ out
+ {
+ assert(lessEqual(a, c) && lessEqual(b, c) && lessEqual(c, d) && lessEqual(c, e));
+ }
+ body
+ {
+ T o;
+
+ if(greater(a, b)) swap(a, b);
+ if(greater(d, e)) swap(d, e);
+
+ if(greater(a, d))
+ {
+ o = a;
+ a = d;
+ d = b;
+ b = o;
+ if(greater(c, e))
+ {
+ o = c;
+ c = d;
+ d = e;
+ e = o;
+ }
+ else swap(c, d);
+ }
+ else if(greater(b, c)) swap(b, c);
+
+ if(greater(b, d))
+ {
+ swap(b, d);
+ swap(c, e);
+ }
+
+ if(greater(c, d)) swap(c, d);
+ }
+
+ /// A simple insertion sort used for sorting small sublists
+ void binaryInsertionSort(R range)
+ {
+ size_t lower, upper, center;
+ T o;
+ for(size_t i = 1; i < range.length; ++i)
+ {
+ o = range[i];
+ lower = 0;
+ upper = i;
+ while(upper != lower)
+ {
+ center = (lower + upper) / 2;
+ if(less(o, range[center])) upper = center;
+ else lower = center + 1;
+ }
+ for(upper = i; upper > lower; --upper) range[upper] = range[upper-1];
+ range[upper] = o;
+ }
+ }
+
+ /// Bottom-up binary heap sort is used to avoid the worst-case of quick sort
+ void heapSort(R range)
+ {
+ // Build Heap
+ size_t i = (range.length - 2) / 2 + 1;
+ while(i > 0) sift(range, --i, range.length);
+
+ // Sort
+ i = range.length - 1;
+ while(i > 0)
+ {
+ swap(range[0], range[i]);
+ sift(range, 0, i);
+ --i;
+ }
+ }
+
+ void sift(R range, size_t parent, immutable size_t end)
+ {
+ immutable root = parent;
+ T value = range[parent];
+ size_t child = void;
+
+ // Sift down
+ while(true)
+ {
+ child = parent * 2 + 1;
+
+ if(child >= end) break;
+
+ if(child + 1 < end && less(range[child], range[child + 1])) child += 1;
+
+ range[parent] = range[child];
+ parent = child;
+ }
+
+ child = parent;
+
+ // Sift up
+ while(child > root)
+ {
+ parent = (child - 1) / 2;
+ if(less(range[parent], value))
+ {
+ range[child] = range[parent];
+ child = parent;
+ }
+ else break;
+ }
+
+ range[child] = value;
+ }
+}
+
+unittest
+{
+ bool testSort(alias pred, R)(R range)
+ {
+ unstableSort!(pred, R)(range, taskPool);
+ return isSorted!pred(range);
+ }
+
+ int testCall(T)(in T[] arr)
+ {
+ int failures = 0;
+
+ if(!testSort!"a < b"(arr.dup)) ++failures;
+ if(!testSort!"a > b"(arr.dup)) ++failures;
+
+ return failures;
+ }
+
+ // Array containing 256 random ints
+ enum test = [
+ 10, 37, 74, 99, 86, 28, 17, 39, 18, 38, 70, 89, 94, 32, 46, 76, 43, 33, 62, 76,
+ 37, 93, 45, 48, 49, 21, 67, 56, 58, 17, 15, 41, 91, 94, 95, 41, 38, 80, 37, 24,
+ 26, 71, 87, 54, 72, 60, 29, 37, 41, 99, 31, 66, 75, 72, 86, 97, 37, 25, 98, 89,
+ 53, 45, 52, 76, 51, 38, 59, 53, 74, 96, 94, 42, 68, 84, 65, 27, 49, 57, 53, 74,
+ 39, 75, 39, 26, 46, 37, 68, 96, 19, 79, 73, 83, 36, 90, 11, 39, 48, 94, 97, 72,
+ 37, 43, 69, 36, 41, 47, 31, 48, 33, 21, 20, 18, 45, 28, 47, 54, 41, 28, 47, 44,
+ 51, 15, 21, 64, 82, 23, 41, 82, 30, 25, 78, 72, 50, 34, 45, 59, 14, 71, 50, 97,
+ 39, 87, 74, 60, 52, 17, 87, 45, 69, 54, 91, 68, 46, 99, 78, 33, 27, 53, 41, 84,
+ 82, 54, 29, 55, 53, 87, 13, 98, 55, 33, 73, 64, 19, 81, 57, 78, 23, 45, 94, 75,
+ 55, 43, 93, 85, 96, 82, 44, 73, 22, 79, 89, 20, 36, 11, 12, 51, 86, 86, 75, 66,
+ 81, 90, 80, 80, 36, 36, 47, 43, 86, 96, 45, 73, 70, 90, 57, 23, 86, 29, 12, 54,
+ 37, 17, 87, 12, 36, 78, 26, 28, 30, 15, 10, 53, 76, 34, 23, 49, 65, 17, 37, 51,
+ 26, 23, 66, 12, 26, 84, 60, 47, 30, 26, 78, 20, 42, 40, 63, 40
+ ];
+
+ // Runtime test
+ assert(testCall(test) == 0);
+}
diff --git a/utils/lz4.d b/utils/lz4.d
new file mode 100644
index 0000000..bda43fc
--- /dev/null
+++ b/utils/lz4.d
@@ -0,0 +1,322 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2015 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module utils.lz4;
+import std.stdio, std.stream, std.conv;
+
+extern(C) {
+ alias size_t LZ4F_errorCode_t;
+ uint LZ4F_isError(LZ4F_errorCode_t code);
+
+ immutable(char)* LZ4F_getErrorName(LZ4F_errorCode_t code); /* return error code string; useful for debugging */
+
+ enum blockSizeID_t { LZ4F_default=0, max64KB=4, max256KB=5, max1MB=6, max4MB=7 }
+ enum blockMode_t { blockLinked=0, blockIndependent}
+ enum contentChecksum_t { noContentChecksum=0, contentChecksumEnabled }
+ enum frameType_t { LZ4F_frame=0, skippableFrame }
+
+ struct LZ4F_frameInfo_t {
+ blockSizeID_t blockSizeID; /* max64KB, max256KB, max1MB, max4MB ; 0 == default */
+ blockMode_t blockMode; /* blockLinked, blockIndependent ; 0 == default */
+ contentChecksum_t contentChecksumFlag; /* noContentChecksum, contentChecksumEnabled ; 0 == default */
+ frameType_t frameType; /* LZ4F_frame, skippableFrame ; 0 == default */
+ ulong contentSize; /* Size of uncompressed (original) content ; 0 == unknown */
+ uint[2] reserved; /* must be zero for forward compatibility */
+ }
+
+ struct LZ4F_preferences_t {
+ LZ4F_frameInfo_t frameInfo;
+ uint compressionLevel; /* 0 == default (fast mode); values above 16 count as 16 */
+ uint autoFlush; /* 1 == always flush (reduce need for tmp buffer) */
+ uint[4] reserved; /* must be zero for forward compatibility */
+ }
+
+ size_t LZ4F_compressFrameBound(size_t srcSize, const LZ4F_preferences_t* preferencesPtr);
+ size_t LZ4F_compressFrame(void* dstBuffer, size_t dstMaxSize, const void* srcBuffer, size_t srcSize, const LZ4F_preferences_t* preferencesPtr);
+
+ alias void* LZ4F_compressionContext_t;
+ struct LZ4F_compressOptions_t {
+ uint stableSrc; /* 1 == src content will remain available on future calls to LZ4F_compress(); avoid saving src content within tmp buffer as future dictionary */
+ uint[3] reserved;
+ }
+
+ enum LZ4F_VERSION = 100;
+ LZ4F_errorCode_t LZ4F_createCompressionContext(LZ4F_compressionContext_t* cctxPtr, uint version_);
+ LZ4F_errorCode_t LZ4F_freeCompressionContext(LZ4F_compressionContext_t cctx);
+ size_t LZ4F_compressBegin(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const LZ4F_preferences_t* prefsPtr);
+ size_t LZ4F_compressBound(size_t srcSize, const LZ4F_preferences_t* prefsPtr);
+ size_t LZ4F_compressUpdate(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const void* srcBuffer, size_t srcSize, const LZ4F_compressOptions_t* cOptPtr);
+ size_t LZ4F_flush(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const LZ4F_compressOptions_t* cOptPtr);
+ size_t LZ4F_compressEnd(LZ4F_compressionContext_t cctx, void* dstBuffer, size_t dstMaxSize, const LZ4F_compressOptions_t* cOptPtr);
+ alias void* LZ4F_decompressionContext_t;
+ struct LZ4F_decompressOptions_t {
+ uint stableDst; /* guarantee that decompressed data will still be there on next function calls (avoid storage into tmp buffers) */
+ uint[3] reserved;
+ }
+ LZ4F_errorCode_t LZ4F_createDecompressionContext(LZ4F_decompressionContext_t* dctxPtr, uint version_);
+ LZ4F_errorCode_t LZ4F_freeDecompressionContext(LZ4F_decompressionContext_t dctx);
+ size_t LZ4F_getFrameInfo(LZ4F_decompressionContext_t dctx, LZ4F_frameInfo_t* frameInfoPtr, const void* srcBuffer, size_t* srcSizePtr);
+ size_t LZ4F_decompress(LZ4F_decompressionContext_t dctx, void* dstBuffer, size_t* dstSizePtr, const void* srcBuffer, size_t* srcSizePtr, const LZ4F_decompressOptions_t* dOptPtr);
+
+}
+
+class LZ4Exception : Exception {
+ this(string description, LZ4F_errorCode_t errorCode) {
+ super(description ~ " : " ~ LZ4F_getErrorName(errorCode).to!string);
+ }
+
+ this(string description) {
+ super(description);
+ }
+}
+
+class LZ4Compressor {
+ private {
+ LZ4F_preferences_t prefs;
+ ubyte[] in_buff;
+ ubyte[] out_buff;
+ LZ4F_compressionContext_t ctx;
+
+ LZ4F_compressionContext_t createCompressionContext() {
+ LZ4F_compressionContext_t ctx;
+ auto code = LZ4F_createCompressionContext(&ctx, LZ4F_VERSION);
+ if (LZ4F_isError(code))
+ throw new LZ4Exception("Failure in LZ4F_createCompressionContext", code);
+ return ctx;
+ }
+
+ void freeCompressionContext(LZ4F_compressionContext_t ctx) {
+ auto code = LZ4F_freeCompressionContext(ctx);
+ if (LZ4F_isError(code))
+ throw new LZ4Exception("Failed to free LZ4F compression context", code);
+ }
+ }
+
+ this() {
+ prefs.autoFlush = 1;
+ prefs.frameInfo.blockMode = blockMode_t.blockIndependent;
+ prefs.frameInfo.blockSizeID = blockSizeID_t.max256KB;
+ prefs.frameInfo.contentChecksumFlag = contentChecksum_t.contentChecksumEnabled;
+
+ int block_size = (1 << (8 + (2 * prefs.frameInfo.blockSizeID)));
+ in_buff.length = block_size;
+ out_buff.length = LZ4F_compressBound(block_size, &prefs);
+ }
+
+ private {
+ size_t compressBegin() {
+ auto sz = LZ4F_compressBegin(ctx, out_buff.ptr, out_buff.length, &prefs);
+ if (LZ4F_isError(sz))
+ throw new LZ4Exception("Failure in LZ4F_compressBegin", sz);
+ return sz;
+ }
+
+ size_t compressUpdate(ubyte[] block) {
+ auto sz = LZ4F_compressUpdate(ctx, out_buff.ptr, out_buff.length, block.ptr, block.length, null);
+ if (LZ4F_isError(sz))
+ throw new LZ4Exception("Failure in LZ4F_compressUpdate", sz);
+ return sz;
+ }
+
+ size_t compressEnd() {
+ auto sz = LZ4F_compressEnd(ctx, out_buff.ptr, out_buff.length, null);
+ if (LZ4F_isError(sz))
+ throw new LZ4Exception("Failure in LZ4F_compressEnd", sz);
+ return sz;
+ }
+ }
+
+ void compress(ubyte[] function(ubyte[], void*) read_block, void* data,
+ std.stdio.File output_file,
+ int compressionLevel=0)
+ {
+ prefs.compressionLevel = compressionLevel;
+
+ ctx = createCompressionContext();
+ assert(ctx !is null);
+
+ auto sz = compressBegin();
+ output_file.rawWrite(out_buff[0 .. sz]);
+
+ while (true) {
+ ubyte[] block = read_block(in_buff, data);
+ if (block.length == 0) break;
+ sz = compressUpdate(block);
+ output_file.rawWrite(out_buff[0 .. sz]);
+ }
+
+ sz = compressEnd();
+ output_file.rawWrite(out_buff[0 .. sz]);
+
+ freeCompressionContext(ctx);
+ }
+
+ private {
+ static ubyte[] read_block_from_file(ubyte[] buf, void* data) {
+ auto input_file = cast(std.stdio.File*)data;
+ return input_file.rawRead(buf);
+ }
+
+ import std.algorithm : min;
+ static ubyte[] read_block_from_array(ubyte[] buf, void* data) {
+ auto arr = cast(ubyte[]*)data;
+ auto n = min(buf.length, (*arr).length);
+ buf[0 .. n] = (*arr)[0 .. n];
+ *arr = (*arr)[n .. $];
+ return buf[0 .. n];
+ }
+ }
+ void compress(std.stdio.File input_file, std.stdio.File output_file,
+ int compressionLevel=0) {
+ compress(&read_block_from_file, &input_file, output_file, compressionLevel);
+ }
+
+ void compress(ubyte[] data, std.stdio.File output_file,
+ int compressionLevel=0) {
+ compress(&read_block_from_array, &data, output_file, compressionLevel);
+ }
+}
+
+private {
+ LZ4F_decompressionContext_t createDecompressionContext() {
+ LZ4F_decompressionContext_t ctx;
+ auto code = LZ4F_createDecompressionContext(&ctx, LZ4F_VERSION);
+ if (LZ4F_isError(code))
+ throw new LZ4Exception("Failure in LZ4F_createDecompressionContext", code);
+ return ctx;
+ }
+
+ void freeDecompressionContext(LZ4F_compressionContext_t ctx) {
+ auto code = LZ4F_freeDecompressionContext(ctx);
+ if (LZ4F_isError(code))
+ throw new LZ4Exception("Failed to free LZ4F decompression context", code);
+ }
+}
+
+struct LZ4File {
+ private {
+ std.stdio.File input_file;
+ LZ4F_decompressionContext_t ctx;
+
+ size_t bytes_read, bytes_written;
+
+ void decompress(ubyte[] block, ubyte[] out_buff) {
+ bytes_read = block.length;
+ bytes_written = out_buff.length;
+ auto code = LZ4F_decompress(ctx, out_buff.ptr, &bytes_written, block.ptr, &bytes_read, null);
+ if (LZ4F_isError(code))
+ throw new LZ4Exception("Failure in LZ4F_decompress", code);
+ }
+
+ ubyte[] in_buff;
+ ubyte[] block;
+ }
+
+ this(string filename) {
+ input_file = std.stdio.File(filename);
+
+ in_buff.length = 256 << 10;
+
+ ctx = createDecompressionContext();
+ assert(ctx !is null);
+
+ auto header = input_file.rawRead(in_buff[0 .. 4]);
+ assert(header.length == 4);
+
+ ubyte[256] tmp;
+ decompress(in_buff[0 .. 4], tmp[]); // header
+ assert(bytes_read == 4);
+ assert(bytes_written == 0);
+ }
+
+ void close() {
+ freeDecompressionContext(ctx);
+ input_file.close();
+ }
+
+ ubyte[] rawRead(ubyte[] buffer) {
+ while (true) {
+ decompress(block, buffer);
+ block = block[bytes_read .. $];
+ if (bytes_written > 0)
+ break;
+ if (block.length == 0 && !readNextBlock())
+ break;
+ }
+ return buffer[0 .. bytes_written];
+ }
+
+ private bool readNextBlock() {
+ block = input_file.rawRead(in_buff);
+ return block.length > 0;
+ }
+}
+
+class LZ4Decompressor {
+ private {
+ ubyte[] in_buff;
+ ubyte[] out_buff;
+ }
+
+ this() {
+ in_buff.length = 256 << 10;
+ out_buff.length = 256 << 10;
+ }
+
+ void decompress(std.stream.InputStream input_file,
+ std.stdio.File output_file) {
+ size_t bytes_read, bytes_written;
+
+ auto ctx = createDecompressionContext();
+ assert(ctx !is null);
+
+ void decompress(ubyte[] block) {
+ bytes_read = block.length;
+ bytes_written = out_buff.length;
+ auto code = LZ4F_decompress(ctx, out_buff.ptr, &bytes_written, block.ptr, &bytes_read, null);
+ if (LZ4F_isError(code))
+ throw new LZ4Exception("Failure in LZ4F_decompress", code);
+ }
+
+ input_file.readExact(in_buff.ptr, 4);
+
+ decompress(in_buff[0 .. 4]); // header
+ assert(bytes_read == 4);
+ assert(bytes_written == 0);
+
+ while (true) {
+ size_t raw_read = input_file.read(in_buff);
+ if (raw_read == 0) break;
+ auto block = in_buff[0 .. raw_read];
+ while (block.length > 0) {
+ decompress(block);
+ block = block[bytes_read .. $];
+ if (bytes_written > 0)
+ output_file.rawWrite(out_buff[0 .. bytes_written]);
+ }
+ }
+ freeDecompressionContext(ctx);
+ }
+}
+
+int lz4compress_main() {
+ auto compressor = new LZ4Compressor();
+ compressor.compress(stdin, stdout);
+ return 0;
+}
diff --git a/utils/strip_bcf_header.d b/utils/strip_bcf_header.d
new file mode 100644
index 0000000..48a6a0f
--- /dev/null
+++ b/utils/strip_bcf_header.d
@@ -0,0 +1,107 @@
+/*
+ This file is part of Sambamba.
+ Copyright (C) 2012-2015 Artem Tarasov <lomereiter at gmail.com>
+
+ Sambamba is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ Sambamba is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+*/
+module utils.strip_bcf_header;
+
+// used in mpileup tool to strip the common header from partial files
+void stripBcfHeader(File input_file, File output_file) {
+ import bio.core.bgzf.inputstream;
+ import bio.core.bgzf.constants;
+ import bio.core.bgzf.block;
+ import bio.core.bgzf.compress;
+ import std.cstream, std.exception;
+
+ auto stream = new CFile(input_file.getFP(), FileMode.In);
+ auto supplier = new StreamSupplier(stream);
+ BgzfBlock block;
+ ubyte[] tmp = new ubyte[BGZF_MAX_BLOCK_SIZE];
+ ushort skip_start, skip_end;
+
+ supplier.getNextBgzfBlock(&block, tmp.ptr, &skip_start, &skip_end);
+ auto decompressed = decompressBgzfBlock(block);
+ auto data = decompressed.decompressed_data;
+ enforce(cast(char[])data[0 .. 3] == "BCF");
+
+ auto header_len = *(cast(int*)(data.ptr + 5));
+ size_t offset = 9 + header_len;
+ header_len -= min(data.length - 9, header_len);
+ while (header_len > 0) {
+ supplier.getNextBgzfBlock(&block, tmp.ptr, &skip_start, &skip_end);
+ decompressed = decompressBgzfBlock(block);
+ data = decompressed.decompressed_data;
+ offset = header_len;
+ header_len -= min(data.length, header_len);
+ }
+
+ auto first_block = bgzfCompress(data[offset .. $], -1, tmp);
+ output_file.rawWrite(first_block);
+
+ while (true) {
+ auto input = input_file.rawRead(tmp);
+ if (input.length == 0) break;
+ output_file.rawWrite(input);
+ }
+}
+
+void stripUncompressedBcfHeader(File input_file, File output_file) {
+ import std.exception, std.algorithm;
+ ubyte[4096] buffer = void;
+ auto start = input_file.rawRead(buffer[0 .. 5]);
+ enforce(cast(char[])start[0 .. 3] == "BCF");
+
+ auto header_len_ = input_file.rawRead(buffer[0 .. 4]);
+
+ auto header_len = *(cast(int*)(buffer.ptr));
+ while (header_len > 0) {
+ auto bytes_to_read = min(header_len, buffer.length);
+ auto chunk = input_file.rawRead(buffer[0 .. bytes_to_read]);
+ header_len -= chunk.length;
+ }
+
+ while (true) {
+ auto chunk = input_file.rawRead(buffer[]);
+ if (chunk.length == 0)
+ break;
+ output_file.rawWrite(chunk);
+ }
+}
+
+void stripVcfHeader(File input_file, File output_file) {
+ import bio.core.utils.bylinefast;
+ bool header = true;
+ auto w = output_file.lockingTextWriter;
+ foreach (line; ByLineFast(input_file)) {
+ if (header && line.length > 0 && line[0] == '#') // header
+ continue;
+ header = false;
+ w.put(line);
+ w.put('\n');
+ }
+}
+
+import std.stdio, std.conv;
+int strip_bcf_header_main(string[] args) {
+ if (args[1] == "--bcf")
+ stripBcfHeader(stdin, stdout);
+ else if (args[1] == "--ubcf")
+ stripUncompressedBcfHeader(stdin, stdout);
+ else if (args[1] == "--vcf")
+ stripVcfHeader(stdin, stdout);
+ return 0;
+}
diff --git a/utils/version_.d b/utils/version_.d
new file mode 100644
index 0000000..329f63d
--- /dev/null
+++ b/utils/version_.d
@@ -0,0 +1,21 @@
+module utils.version_;
+
+immutable string VERSION = "0.6.5";
+
+import bio.sam.header;
+import std.array : join;
+
+SamHeader addPG(string tool, string[] args, SamHeader header) {
+ auto pg_line = PgLine();
+ pg_line.identifier = "sambamba";
+ pg_line.command_line = tool ~ " " ~ join(args[1 .. $], " ");
+ pg_line.program_version = VERSION;
+
+ if (header.programs.length > 0) {
+ auto prev_id = header.programs.values.back.identifier;
+ pg_line.previous_program = prev_id;
+ }
+
+ header.programs.add(pg_line);
+ return header;
+}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-med/sambamba.git
More information about the debian-med-commit
mailing list